网站首页 > 技术文章 正文
React简介
React(有时叫React.js或ReactJS)是 Facebook 推出的一个为数据提供渲染为 HTML 视图,用来构建用户界面的开源 JavaScript 库。
React 视图通常采用包含以自定义 HTML 标记规定的其他组件的组件渲染。React 为程序员提供了一种子组件不能直接影响外层组件("data flows down")的模型,数据改变时对 HTML 文档的有效更新,和现代单页应用中组件之间干净的分离。
17新特性
React 17 正式版已经发布,本次版本变更日志如下:
React
- 为全新的 JSX 转换器添加 react/jsx-runtime 和 react/jsx-dev-runtime。
- 根据原生框架构建组件调用栈。
- 可以在 context 中设置 displayName 以改善调用栈信息。
- 防止 'use strict' 从 UMD 的 bundles 中泄露。
- 停止使用 fb.me 进行重定向。
React DOM
- 将事件委托从 document 切换为 root。
- 在运行下一个副作用前,请清理所有副作用。
- 异步运行 useEffect 清理函数。
- 使用浏览器的 focusin 和 focusout 替换 onFocus 和 onBlur 的底层实现。
- 将所有 Capture 事件都使用浏览器的捕获阶段实现。
- 禁止在 onScroll 事件时冒泡。
- 如果 forwardRef 或 memo 组件的返回值为 undefined,则抛出异常。
- 移除事件池。
- 移除 React Native Web 不需要的内部组件。
- 当挂载 root 时,附加所有已知的事件监听器。
- 在 Dev 模式下,禁用第二次渲染过程中的 console。
- 弃用为记录且具有误导性的 ReactTestUtils.SimulateNative API。
- 重命名内部使用的私有字段
- 不在开发环境调用 User Timing API。
- 在严格模式下重复渲染期间禁用 console。
- 在严格模式下,二次渲染组件也不使用 Hook。
- 允许在生命周期函数中调用 ReactDOM.flushSync(但会发出警告)。
- 将 code 属性添加到键盘事件对象中。
- 为 video 元素添加 disableRemotePlayback 属性。
- 为 input 元素添加 enterKeyHint 属性。
- 当没有给 <Context.Provider> 提供任何值时,会发出警告。
- 如果 forwardRef 或 memo 组件的返回值为 undefined,则抛出警告。
- 为无效更新改进错误信息。
- 从调用栈信息中忽略 forwardRef 和 memo。
- 在受控输入与非受控输入间切换时,改善错误消息。
- 保持 onTouchStart、onTouchMove 和 onWheel 默认为 passive。
- 修复在 development 模式下 iframe 关闭时,setState 挂起的问题。
- 使用 defaultProps 修复拉架子组件在渲染时的问题。
- 修复当 dangerouslySetInnerHTML 为 undefined 时,误报警告的问题。
- 使用费标准的 require 实现来修复 Test Utils。
- 修复 onBeforeInput 报告错误的 event.type。
- 修复 Firefox 中 event.relatedTarget 输出为 undefined 的问题。
- 修复 IE11 中 "unspecified error" 的问题。
- 修复 shadow root 中的渲染问题。
- 使用事件捕获修复 movementX/Y polyfill 的问题。
- 使用委托处理 onSubmit 和 onReset 事件。
- 提高内存使用率。
React DOM Server
- 使用服务端渲染的 useCallback 与 useMemo 一致。
- 修复函数组件抛出异常时状态泄露的问题。
React Test Renderer
- 改善 findByType 错误信息。
Concurrent Mode(实验阶段)
- 改进启发式更新算法。
- 在实现性 API 前添加 unstable_ 前缀。
- 移除 unstable_discreteUpdates 和 unstable_flushDiscreteUpdates。
- 移除了 timeoutMs 参数。
- 禁用 <div hidden /> 预渲染,以支持未来的 API。
- 为 Suspense 添加了 unstable_expectedLoadTime,用于 CPU-bound 树。
- 添加了一个实现性的 unstable_useOpaqueIdentifier Hook。
- 添加了一个实验性的 unstable_startTransition API.
- 在测试渲染器中使用 act 后,不在刷新 Suspense 的 fallback。
- 将全局渲染的 timeout 用于 CPU Suspense。
- 挂载前,清除现有根目录的内容。
- 修复带有错误边界的 bug。
- 修复了导致挂起树更新丢失的 bug。
- 修复导致渲染阶段更新丢失的 bug。
- 修复 SuspenseList 的 bug。
- 修复导致 Suspense fallback 过早显示的 bug。
- 修复 SuspenseList 中使用 class 组件异常的 bug。
- 修复输入内容可能被更新被丢弃的 bug。
- 修复暂挂 Suspense fallback 后卡住的错误。
- 如果 hydrate 中,不要切断 SuspenseList 的尾部。
- 修复 useMutableSource 中的 bug,此 bug 可能在 getSnapshot 更改时出现。
- 修复 useMutableSource 令人恶心的 bug。
- 如果外部渲染且提交之前调用 setState,会发出警告。
React v17 新特性详情:https://reactjs.org/blog/2020/10/20/react-v17.html
- 上一篇: JavaScript:快速排序、冒泡排序、归并排序
- 下一篇: 浏览器事件模型(浏览器的事件机制)
猜你喜欢
- 2024-09-20 Vue.js常见的20道前端面试题及答案
- 2024-09-20 AI面试官:我能胜任React(二)(我能胜任这份工作吗)
- 2024-09-20 70个JavaScript知识点详细总结(上)【实践】
- 2024-09-20 ReactDOM.render和ReactDOM.createPortal的区别
- 2024-09-20 学会使用Vue JSX,一车老干妈都是你的
- 2024-09-20 字节P8大佬爆肝整理,一文带你梳理React面试题!
- 2024-09-20 2024前端面试真题之—VUE篇(2020web前端经典面试题 vue)
- 2024-09-20 JS事件绑定的常用方式实例总结(js事件绑定的四种方式)
- 2024-09-20 JavaScript 的基本术语大全(javascript的基本概念)
- 2024-09-20 React18内核探秘:手写React高质量源码迈向高阶开发(超清完结)
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 563℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 508℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 465℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 445℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 442℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)