React 0.14 更新摘要
读 react 0.14 changelog 时简单地记录了下重点。
install
在development环境下react会做warning检查,使用NODE_ENV=production来避免检查,提高react的速度。
major change
Two Packages: React and React DOM
拆分为 react
react-dom
两个类库。
-
react
createElement
createClass
Component
PropTypes
Children
-
react-dom
render
unmountComponentAtNode
findDOMNode
-
react-dom/server
renderToString
renderToStaticMarkup
-
addons 被移到独立的包中
react-addons-clone-with-props
react-addons-create-fragment
react-addons-css-transition-group
react-addons-linked-state-mixin
react-addons-perf
react-addons-pure-render-mixin
react-addons-shallow-compare
react-addons-test-utils
react-addons-transition-group
react-addons-update
ReactDOM.unstable_batchedUpdates in react-dom.
var Zoo = React.createClass({ render: function() { return <div>Giraffe name: <input ref="giraffe" /></div>; },showName: function() { // PrevIoUsly: var input = this.refs.giraffe.getDOMNode(); var input = this.refs.giraffe; alert(input.value); } });
Stateless functional components
对于简单的无状态的组件(只有一个render函数),提供新的更加简单的语法去声明。
// A functional component using an ES2015 (ES6) arrow function: var Aquarium = (props) => { var fish = getFish(props.species); return <Tank>{fish}</Tank>; }; // Or with destructuring and an implicit return,simply: var Aquarium = ({species}) => ( <Tank> {getFish(species)} </Tank> ); // Then use: <Aquarium species="rainbowfish" />
表现跟只有一个
render
函数的组件一样由于不会创建实例,添加的
ref
将会返回null
函数声明的组件将没有
lifecycle
函数,但是可以将.propTypes
和.defaultProps
设置为该函数的属性
react-tools 被取消
使用 babel
对 jsx
进行编译
Breaking changes
React.initializeTouchEvents 被移除,默认支持 touch 事件
Add-Ons: Due to the DOM node refs change mentioned above,TestUtils.findAllInRenderedTree and related helpers are no longer able to take a DOM component,only a custom component.
会产生警告的改变
props 现在不可改变, 使用 React.cloneElement
React.children 不支持使用 Plain Object,使用array作为替代。也可以使用
createFragment
来进行迁移Add-Ons classSet 被移除, 使用
classnames