「开源资讯」React 17 正式版发布,构建用户界面的 JavaScript 库

mulan 2020-10-22 10:07:17 ⋅ 839 阅读

React简介

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 属性。
  • 当没有给 <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

 
 

全部评论: 0

    我有话说:

    滴滴开源基于 React 移动端开发组件-Pile.js

    Pile.js 是滴滴开发基于 React 移动端开发组件。 轻量,易用,包含 52 个交互功能,支持多语言与自定义皮肤。可以非常轻松创建用户交互界面,让前端开发更专注于业务逻辑实现。

    ECharts 5.0.1 发布JavaScript 实现交互式图表可视化

    Apache ECharts (incubating) 5.0.1 已发布,ECharts 是一个使用 JavaScript 实现开源可视化,可以流畅运行在 PC 和移动设备上,兼容

    Android 12 开发者预览 2.2 发布

    上月底,Google 发布了 Android 12 DP 2.1,解决了 WebView 崩溃大问题。目前,开发者预览 2.2 已经向运行 Android 12 Pixel 手机正式推出

    Android 12 最后一个开发者预览发布

    谷歌已经发布了 Android 12 第三个开发者预览,这也是最后一个以开发者为中心构建版本。第一个 Android 12 测试将在 5 月到来,第二个和第三个测试构建则将在 6 月至 7

    开源资讯」Guava 28.2 发布,Google Java 核心工具

    前言 Guava 28.2 发布了,Guava 是 Google 一个开源项目,包含许多 Google 核心 Java 常用,如:集合 [collections] 、缓存 [caching

    11Javascript机器学习

    1. Brain.js Brain.js是一个Javascript用于替代(现在已弃用)“ 脑 ”神经网络,该可与Node.js一起使用或在浏览器中使用(注释计算),并为不同任务提供不同

    红旗 Linux 桌面系统发布 v11 预览,1月10开放下载

    近日,国产操作系统红旗 Linux 官网上线最新红旗 Linux 桌面操作系统 v11 社区预览,更新内容包括多项组件更新和全新主题界面等。 据悉,最新红旗 Linux 桌面系统 v11

    开源资讯」Gradle 6.7 发布,增量构建改进

    Gradle 6.7 已经发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用

    开源推荐】基于 Go 语言轻量级高性能日志 logit使用及测评

    logit 是一个简单易用并且是基于级别控制日志,可以应用于所有 GoLang 应用程序中。

    Krita 4.4.1 正式发布开源数字绘画软件

    Krita 4.4.1 正式发布,它是一款自由开源数字绘画软件,主要针对手绘用途设计,具备高度可定制笔刷系统和完善图层功能,可通过透明度和变形蒙来实现非破坏性编辑。它能够绘制位图图像、矢量

    Node.js v15.13.0 发布

    Node.js 15.13.0 正式发布。Node.js 是能够在服务器端运行 JavaScript 开放源代码、跨平台 JavaScript 

    开源资讯】Electron 10.1.4 发布,跨平台桌面应用开发工具

    简介 Electron 是 GitHub 发布跨平台桌面应用开发工具,支持 Web 技术开发桌面应用,其本身是基于 C++ 开发,GUI 核心来自于 Chrome,而

    开源资讯」优麒麟 20.10 版本发布--简而美,华而实

    北京时间 2020 年 10 月 23 日,优麒麟团队很高兴地宣布优麒麟(Ubuntu Kylin)开源操作系统 20.10 版本(代号Groovy Gorilla)正式发布。20.10 是优麒麟

    开源资讯」.NET 5.0 RC 2 发布

    微软上周发布了 .NET 5.0 RC 2,此版本已接近最终发布,也是11正式发布最后一个 RC 版本。微软还表示这是一个“go live”版本,支持用于生产环境,当然这不是指稳定性方面具备

    2018常用JavaScript

    9个非常有用Javascript来加速你开发

    Element 2.14.1 发布,基于 Vue 桌面端组件

    Element 2.14.1 发布了。Element 是一套为开发者、设计师和产品经理准备基于 Vue 2.0 桌面端组件,提供了配套设计资源,帮助你网站快速成型。由饿了么公司前端团队开源

    VUE 开源收藏版(一):史上最全面学习资源 ,附GitHub源码地址

    VUE 开源收藏版(一):史上最全面学习资源 ,附GitHub源码地址

    Linux Lite 5.4 RC1 发布,面向 Windows 用户 Linux 发行

    Linux Lite 5.4 RC1 已发布,这是一个对新手友好 Linux 发行,它基于 Ubuntu LTS,并以 Xfce 桌面为特色。Linux Lite 主要针对 Windows 用户