【发布时间】:2018-03-04 04:24:14
【问题描述】:
我正在阅读 Reactjs 的 document 关于不改变数据的内容。 我不明白文档示例中两段代码之间的区别:
handleClick() {
// This section is bad style and causes a bug
const words = this.state.words;
words.push('marklar');
this.setState({words: words});
}
和:
handleClick() {
this.setState(prevState => ({
words: prevState.words.concat(['marklar'])
}));
}
为什么第二个代码不会改变数据?
【问题讨论】:
-
首先,您将推送到数组的引用。在第二个中,您使用
concat复制数组并且不会改变当前状态 -
concat返回一个新数组。
标签: javascript reactjs