「开源资讯」React 17 正式版发布

React简介【「开源资讯」React 17 正式版发布】React(有时叫React.js或ReactJS)是 Facebook 推出的一个为数据提供渲染为 HTML 视图 , 用来构建用户界面的开源 JavaScript 库 。
React 视图通常采用包含以自定义 HTML 标记规定的其他组件的组件渲染 。 React 为程序员提供了一种子组件不能直接影响外层组件("data flows down")的模型 , 数据改变时对 HTML 文档的有效更新 , 和现代单页应用中组件之间干净的分离 。
17新特性
「开源资讯」React 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 属性 。
  • 当没有给 提供任何值时 , 会发出警告 。
  • 如果 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(实验阶段)