use-resize-observer版本迁移指南:从v9到v10的关键变化
use-resize-observer版本迁移指南从v9到v10的关键变化【免费下载链接】use-resize-observerA React hook that allows you to use a ResizeObserver to measure an elements size.项目地址: https://gitcode.com/gh_mirrors/us/use-resize-observeruse-resize-observer是一个实用的React hook它允许你使用ResizeObserver来测量元素的尺寸。随着v10版本的发布这个库进行了一系列重要更新包括现代化工具链、添加React 19支持以及修复了多个长期存在的问题。本文将详细介绍从v9迁移到v10的关键变化和具体步骤帮助你顺利完成升级。为什么需要迁移到v10v10版本不仅带来了新功能还对库的结构和依赖进行了优化。主要改进包括现代化的工具链提升了构建效率和代码质量添加了React 19支持同时保持对React 18的兼容移除了不必要的依赖使包体积更小修复了多个长期存在的bug提升了稳定性和可靠性主要的破坏性变化1. 默认导出已移除使用命名导出这是最主要的变化你需要将默认导入改为命名导入-import useResizeObserver from use-resize-observer; import { useResizeObserver } from use-resize-observer;为什么这样改因为从同时具有CommonJS输出的包中导出默认值是interop错误的持续来源。TypeScript手册建议CommonJS库避免默认导出。命名导出在ESM和CJS中都有一个明确的形状。2.use-resize-observer/polyfilled入口点已移除如果你之前使用了polyfilled版本需要改为标准导入-import useResizeObserver from use-resize-observer/polyfilled; import { useResizeObserver } from use-resize-observer;如果你依赖于捆绑的polyfill可以在应用的入口点自行polyfillResizeObserverimport { ResizeObserver } from juggle/resize-observer; if (!window.ResizeObserver) { window.ResizeObserver ResizeObserver; }这样应用程序可以控制polyfill而不是由库来控制。3. 零运行时依赖juggle/resize-observer依赖项已随polyfilled入口点一起移除。该包现在没有运行时依赖项这有助于减小你的项目体积并减少潜在的依赖冲突。4.react-dom不再是 peer 依赖react-dom不再被列为peer依赖react仍然是唯一的peer依赖。如果你之前的包管理器警告缺少react-dompeer现在这个警告应该消失了。5. 支持的React版本现在需要React 18.2或更高版本任何旧版本都不再支持。peer范围没有上限18.2因此未来的React主版本无需在此处发布即可被接受。6. 输出目标为ES2020不再支持IE 11构建不再转译为ES5 / IE 11。如果你必须支持非常旧的浏览器可以在自己的构建过程中转译node_modules/use-resize-observer。7. 只能导入包根目录该包现在声明了一个exports映射因此只有use-resize-observer本身可以被解析。以前深入导入dist/是有效的以前没有exports字段现在会失败并显示ERR_PACKAGE_PATH_NOT_EXPORTED-import useResizeObserver from use-resize-observer/dist/bundle.esm.js; import { useResizeObserver } from use-resize-observer;8. 测量尺寸为0时现在报告为0而不是undefined以前真正的零测量值折叠的或display: none相邻的元素显示为undefined这与尚未测量无法区分。现在它被报告为0而undefined仅表示尚未测量。如果你使用默认值来掩盖这个问题——const { width 0 } ...——真正的0现在不再触发默认值。这通常是你想要的但如果你在width undefined上分支就值得一看。9. 全局ResizeObserverEntry增强已移除v9提供了一个declare global它将devicePixelContentBoxSize添加到全局ResizeObserverEntry类型中这会泄露到每个消费者的类型中。现在这已被移除。如果你的代码依赖于该环境声明你现在需要一个足够新的TypeScriptlib来定义它ES2022时代的DOM libs可以或者自己声明它。值得注意onResize负载增加了entryonResize回调现在接收原始ResizeObserverEntry以及测量的大小。这是附加的因此解构所需内容的处理程序保持不变onResize: ({ width, height }) {} // 不受影响只有当你将整个负载传递到某个地方时才重要因为它现在携带了额外的属性将其存储在状态中。onResize: setSize现在将条目放入你的状态中只要该状态存在它就会保持活跃状态——通过entry.target观察到的元素也是如此。相反选择这些值-onResize: setSize onResize: ({ width, height }) setSize({ width, height })精确比较。对负载的深度相等性检查执行expect(size).toEqual({ width, height })的测试或比较负载的备忘录不再匹配。比较各个值或使用部分匹配。迁移步骤总结将默认导入改为命名导入移除对use-resize-observer/polyfilled的引用如果需要手动添加ResizeObserver polyfill更新React版本至18.2或更高检查并更新任何深度导入审查代码中处理undefined尺寸的部分检查onResize回调的使用方式工具链更新v10不仅带来了API变化还对工具链进行了全面现代化构建rollup babel → tsdown (ESM CJS 类型声明)测试jest karma → Vitest在真实浏览器中使用Playwright以及在真实桌面和移动设备上的WebdriverIO / BrowserStack套件lint / 格式化eslint prettier → oxlint oxfmt包管理器yarn → pnpm在Node 24上使用OIDC可信发布的CI这些变化虽然不直接影响你的代码但它们提高了库的质量和可维护性确保未来的更新更加顺畅。总结use-resize-observer v10带来了一些重要的变化但迁移过程相对简单主要涉及导入方式的改变和一些小的API调整。通过遵循本文概述的步骤你应该能够顺利地将项目从v9迁移到v10并享受新版本带来的改进和优化。如果你在迁移过程中遇到任何问题可以查阅项目的MIGRATION.md文件获取更详细的信息或查看测试目录中的示例代码如useResizeObserver.test.tsx。升级到v10不仅能让你使用最新的功能还能确保你的项目与现代React生态系统保持同步为未来的发展做好准备。【免费下载链接】use-resize-observerA React hook that allows you to use a ResizeObserver to measure an elements size.项目地址: https://gitcode.com/gh_mirrors/us/use-resize-observer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

开发者必看:X-VLA (LeRobot) 源码结构与API调用全解析

开发者必看:X-VLA (LeRobot) 源码结构与API调用全解析

开发者必看:X-VLA (LeRobot) 源码结构与API调用全解析 【免费下载链接】xvla-widowx 项目地址: https://ai.gitcode.com/hf_mirrors/lerobot/xvla-widowx X-VLA (LeRobot) 是一款基于视觉-语言-动作(Vision-Language-Action)的基础模…

2026/8/7 22:00:11 阅读更多 →
online-markdown vs 传统编辑器:为什么开发者都选择这款微信排版工具?

online-markdown vs 传统编辑器:为什么开发者都选择这款微信排版工具?

online-markdown vs 传统编辑器:为什么开发者都选择这款微信排版工具? 【免费下载链接】online-markdown 在线Markdown转微信公众号内容工具 项目地址: https://gitcode.com/gh_mirrors/onl/online-markdown online-markdown是一款专为开发者打造…

2026/8/7 22:00:11 阅读更多 →
URLify vs 其他slug工具:为什么这款PHP库能处理99%的特殊字符转换需求?

URLify vs 其他slug工具:为什么这款PHP库能处理99%的特殊字符转换需求?

URLify vs 其他slug工具:为什么这款PHP库能处理99%的特殊字符转换需求? 【免费下载链接】urlify A fast PHP slug generator and transliteration library that converts non-ascii characters for use in URLs. 项目地址: https://gitcode.com/gh_mir…

2026/8/7 21:59:11 阅读更多 →

最新新闻

企业ETL团队转型:现代数据集成平台ETLCloud实践指南

企业ETL团队转型:现代数据集成平台ETLCloud实践指南

1. 为什么企业需要重新思考ETL团队建设?在传统的数据集成领域,ETL(Extract-Transform-Load)团队往往被视为企业数据架构中不可或缺的核心组成部分。我曾在某跨国零售企业见证过一个典型场景:他们的ETL团队由15名工程师…

2026/8/7 23:00:32 阅读更多 →
SGLang性能调优完全指南:从内核分析到系统级优化的5个关键技术

SGLang性能调优完全指南:从内核分析到系统级优化的5个关键技术

SGLang性能调优完全指南:从内核分析到系统级优化的5个关键技术 【免费下载链接】sglang SGLang is a high-performance serving framework for large language models and multimodal models. 项目地址: https://gitcode.com/GitHub_Trending/sg/sglang SGLa…

2026/8/7 23:00:32 阅读更多 →
10分钟打造你的第一个企业级无头CMS:Strapi零代码入门指南

10分钟打造你的第一个企业级无头CMS:Strapi零代码入门指南

10分钟打造你的第一个企业级无头CMS:Strapi零代码入门指南 【免费下载链接】strapi 🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first. 项目地址: https://gitcode.co…

2026/8/7 23:00:32 阅读更多 →
如何永久保存微信聊天记录:免费工具终极指南

如何永久保存微信聊天记录:免费工具终极指南

如何永久保存微信聊天记录:免费工具终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

2026/8/7 23:00:32 阅读更多 →
跨平台编译QT5.15.10实战指南

跨平台编译QT5.15.10实战指南

Qt 5.15.10 ARM64 交叉编译环境配置与编译指南 1. 环境配置 1.1 下载 ARM64 工具链 下载 ARM64 工具链(如 gcc-arm-10.2),确保包含 aarch64-none-linux-gnu-g 编译器。 链接:gcc 官网下载 版本可选,建议版本 10.2。…

2026/8/7 23:00:32 阅读更多 →
从创意到上线:STFU项目的开发历程与技术选型全记录

从创意到上线:STFU项目的开发历程与技术选型全记录

从创意到上线:STFU项目的开发历程与技术选型全记录 【免费下载链接】stfu stfu 项目地址: https://gitcode.com/gh_mirrors/stf/stfu STFU是一款基于Web Audio API开发的创新工具,旨在通过音频反馈机制帮助用户应对公共场合的噪音干扰。本文将详细…

2026/8/7 22:59:32 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →