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.SimulateNativeAPI。 - 重命名内部使用的私有字段
- 不在开发环境调用
User TimingAPI。 - 在严格模式下重复渲染期间禁用
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 国际许可协议 进行许可。
评论已关闭