两个月以前,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 尝试通过这次分离实现两个目标:
- 允许开发者自定义 DOM 渲染引擎;
 - 允许跨渲染引擎共享组件,例如:
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 <tank>{fish}</tank>; }; 
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








    
评论