我知道在React中不应该直接改变状态(state),但是如果我使用函数呢?
onSocialClick = e => {
const id = e.target.value;
this.setState((prevState, props) => {
prevState[id] = !(prevState[id]);
return prevState;
});
};
修改传递的对象是一个错误吗?
编辑:
事实证明,我们大多数人都错了。React 文档现在明确指出:
状态是对组件状态在应用更改时的引用。它不应该被直接改变。相反,应该通过基于状态和属性输入构建新对象来表示更改。
感谢@Tomáš Hübelbauer在评论中指出这一点。
setState
而不是this.state =...
。如果你这样做的话 - 无论你使用什么作为传入参数,一切都会正常。 - elmeisterprevState
重命名为state
。 - Andrew Nessin