React v15.6.0

June 12, 2017 by Flarnie Marchan

今天我们发布了 React 15.6.0。由于我们在准备React 16.0,因此我们修复和清理了许多东西。此次发布将继续为后续铺路。

提升Inputs {#improving-inputs}

在React 15.6.0,输入框的onChange事件稍微可靠了点并能够处理更多边界条件,涵盖以下:

  • 当单选按钮被点击但未改变时事件未触发(issue 1471
  • 用方向键(arrow keys)修改范围(range)类型的输入框(issue 554
  • 在IE 11复制文本到文本框中(issue 7211
  • 在IE 11自动填充(issue 6614
  • 在IE 11中通过’x’键或右键’删除’清空输入框(issue 6822
  • 在IE 11中渲染输入框中已存在字符时事件未触发(issue 2185

感谢Jason Quense以及其他帮助解决上述问题和提出PR的各位。

更少嘈杂的弃用警告 {#less-noisy-deprecation-warnings}

我们还为之后的弃用引入了一系列新的警告。这些并不会影响大多数用户,更多细节可以查看下面的修改日志。

自上次发布之后,我们从社区得到了一些有价值的反馈,弃用警告会产生噪音并使得测试失败。在React 15.6,我们采用console.warn而不是console.error来对弃用警告进行降级处理。我们的其他警告将仍使用console.error因为他们面对的可能是引发异常的棘手问题。不同于我们其他警告,弃用警告可以延期修复并且不会在发布环节对你的引用造成问题。我们认为降低弃用警告的紧急程度将会让你在下个版本的升级中更为容易。感谢参与这一问题讨论的各位。


安装 {#installation}

我们推荐使用 Yarnnpm 来管理前端依赖。若你是初次接触包管理器,Yarn 文档是一个不错的起点。

通过 Yarn 安装 React,运行:

yarn add react@^15.6.0 react-dom@^15.6.0

通过 npm 安装 React,运行:

npm install --save react@^15.6.0 react-dom@^15.6.0

我们推荐如 webpackBrowserify 打包器,以让你可以编写模块化代码并将其打包到一起放在一个小的包内以优化加载时间。

记住默认情况下,React 在开发模式下运行会带有额外检查并提供有用的警告。当部署你的应用时,确保其在生产模式编译

万一你未使用打包器,我们也提供了一个预先构建好的包在npm上,你可以在你的页面中通过script标签引入

我们还在 npm 上发布了 reactreact-dom 及附件包的15.6.0 版本以及在bower上的 react 包。


修改日志 {#changelog}

15.6.0 (June 13, 2017) {#1560-june-13-2017}

React {#react}

  • 采用console.warn而不是console.error来降级处理弃用警告。(@flarnie#9753 的提交)
  • React.createClass增加弃用警告。将用户指向create-react-class。(@flarnie#9771 的提交)
  • 增加弃用警告并为React.DOM工厂辅助方法分离为新模块。(@nhunzaker#8356 的提交)
  • React.createMixin的弃用警告辅助方法将不再使用。(@aweary#8853 的提交)

React DOM {#react-dom}

  • style属性中增加CSS变量支持。 (@aweary#9302 的提交)
  • 增加CSS网格(Grid)样式属性支持。(@ericsakmar#9185 的提交)
  • 修复输入框改变可变值类型异常。(@nhunzaker#9806 的提交)
  • 修复在某些输入场景下onChange未触发的问题。(@jquense#8575 的提交)
  • 修复控制数字输入框错误允许期间的异常。(@nhunzaker#9584 的提交)
  • 修复性能记录(performance entry)被清除的bug。(@chrisui#9451 的提交)

React Addons {#react-addons}

  • Fix AMD support for addons depending on react. (@flarnie in #9919)
  • Fix isMounted() to return true in componentWillUnmount. (@mridgway in #9638)
  • Fix react-addons-update to not depend on native Object.assign. (@gaearon in #9937)
  • Remove broken Google Closure Compiler annotation from create-react-class. (@gaearon in #9933)
  • Remove unnecessary dependency from react-linked-input. (@gaearon in #9766)
  • Point react-addons-(css-)transition-group to the new package. (@gaearon in #9937)