两个月以前,React 0.14发布 Beta版 ,目前,该项目正式 发布候选(RC)版 。React 0.14将强制分离渲染引擎与关注点,简化无状态组件的声明,添加新语法 refs
。
React 0.14将被分割为两个包: react
和 react-dom
。这一决定旨在强制分离React和它的DOM渲染引擎。分离后的 react
包含各种创建组件的方法,例如: React.createElement
、 React.createClass
、 React.Component、React.PropTypes
、 React.children
; react-dom
包含各种渲染方法,例如: ReactDOM.render
、 ReactDOM.unmountComponentAtNode
、 ReactDOM.findDOMNode
; react-dom/server
提供对服务器端组件渲染功能的支持。
Facebook尝试通过这次分离实现两个目标:
react-dom
、 [react-native][3]
、 [react-art][4]
、 [react-canvas][5]
以及 [react-three][6]
。 第二个主要变化是,React 0.14为内建的DOM节点引入了关注点引用(concerns refs)。在React 0.13中,如果你想通过引用(ref)访问一个节点属性,需要这样写:
const nameNode = this.refs.name.getDOMNode();
在React 0.14中,内建React节点的引用是节点本身,所以代码可以简化为:
const nameNode = this.refs.name;
引用节点的唯一作用是访问它的DOM节点,基于这个理念,这次的改变只针对内建节点,不会影响用户自定义的节点。与此同时 ,.getDOMNode()
方法也被弃用并使用 ReactDOM.findDOMNode
进行替代。为此,Facebook发布了一个名为 codemod 的脚本来帮助开发者完成这一转变。
此外,React 0.14也在尝试简化有其它组件组成的无状态组件的声明方式,这与React 0.13启动时Facebook工程师所 陈述 的如出一辙:
不幸的是,我们不会在React中针对ES6类语法提供mixin支持。那与我们使用符合语言习惯的JavaScript的观念相违背。[…] 我们同样会开始设计一个新的组合API,可以不借助mixin简化常见的任务。
React 0.14中的新语法将允许使用 props
作为参数并返回渲染的元素:
var Aquarium = (props) => { var fish = getFish(props.species); return{fish} ; };
React 0.14还会弃用一些方法,例如: this.getDOMNode()
、 setProps
和 replaceProps
等。此外,React 0.13中所有的弃用警告全部转变为错误抛出。
可以通过 npm
安装React 0.14:
npm install --save react@0.14.0-rc1 npm install --save react-dom@0.14.0-rc1
也可以访问 React的Github仓 库通过bug tracker来提交issue。
查看英文原文: React 0.14 Hits Release Candidate, Adding New Package Split, Refs Syntax, and More