假设我有一个普通对象列表,this.state.list
然后可以用来呈现子级列表。那么将对象插入其中的正确方法是什么this.state.list
?
以下是我认为它将起作用的唯一方法,因为您不能this.state
像文档中提到的那样直接更改。
this._list.push(newObject):
this.setState({list: this._list});
这对我来说似乎很丑。有没有更好的办法?
假设我有一个普通对象列表,this.state.list
然后可以用来呈现子级列表。那么将对象插入其中的正确方法是什么this.state.list
?
以下是我认为它将起作用的唯一方法,因为您不能this.state
像文档中提到的那样直接更改。
this._list.push(newObject):
this.setState({list: this._list});
这对我来说似乎很丑。有没有更好的办法?
更新2016
使用ES6,您可以使用:
this.setState({ list: [...this.state.list, ...newObject] });
从react docs(https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous)中:
由于this.props和this.state可以异步更新,因此您不应依赖于它们的值来计算下一个状态。
因此,您应该这样做:
this.setState((prevState) => ({
contacts: prevState.contacts.concat([contact])
}));
setState()可以使用函数作为参数来调用:
或在ES5中: