React的官方文档提供了
Immutability Helpers.
这些助手会有什么现实世界的用法?我想我错过了一些非常基本的东西.
React假定在状态中设置的对象是不可变的,这意味着如果要添加或删除数组中的某个元素,您应该创建一个带有添加元素的新元素,保持前一个数组不变:
var a = [1,2,3]; var b = React.addons.update(a,{'$push': [4] }); console.log(a); // [1,3]; console.log(b); // [1,3,4];
通过使用不可变对象,您可以轻松检查对象的内容是否已更改:
React.createClass({ getInitialState: function () { return { elements: [1,3] }; },handleClick: function() { var newVal = this.state.elements.length + 1; this.setState({ elements: React.addons.update(this.state.elements,{ '$push': [ newVal ] }) }) },shouldComponentUpdate: function (nextProps,nextState) { return this.state.elements !== nextState.elements; },render: function () { return ( <div onClick={this.handleClick}>{ this.state.elements.join(',') }</div> ); } });