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
属性。 - 当没有给
<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 新特性详情:
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭