什么是更改React状态的首选方法?
比方说,我有一个在我的this.state.list中的纯对象列表,我可以用来呈现一个孩子的列表。 那么将对象插入到this.state.list的正确方法是什么? 
 以下是我认为它将起作用的唯一方式,因为您不能像doc中所提到的this.state直接改变this.state 。 
 this._list.push(newObject): this.setState({list: this._list}); 
这对我来说似乎是丑陋的。 有没有更好的办法?
  concat返回一个新的数组,所以你可以做 
 this.setState({list: this.state.list.concat([newObject])}); 
另一个select是React的不变性帮手
  var newState = React.addons.update(this.state, { list : { $push : [newObject] } }); this.setState(newState); 
可以使用函数作为参数调用setState() :
 this.setState((state) => ({ list: state.list.concat(newObj) })) 
或在ES5中:
 this.setState(function(state) { return { list: state.list.concat(newObj) } }) 
2016年更新
有了ES6,你可以使用:
 this.setState({ list: [...this.state.list, ...newObject] }); 
从反应文档( https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous ):
因为this.props和this.state可能会asynchronous更新,所以不应该依赖它们的值来计算下一个状态。
所以你应该这样做:
 this.setState((prevState) => ({ contacts: prevState.contacts.concat([contact]) }));