我知道我不应该直接在React中改变状态,但是当我使用函数时情况怎么样:
onSocialClick = e => {
const id = e.target.value;
this.setState((prevState, props) => {
prevState[id] = !(prevState[id]);
return prevState;
});
};
Run Code Online (Sandbox Code Playgroud)
修改传递的对象是错误的吗?
编辑:
事实证明,我们大多数人在这里都错了.React docs现在清楚地说明了这一点:
state是对应用更改时组件状态的引用.它不应该直接变异.相反,应该通过基于state和props的输入构建新对象来表示更改
感谢@TomášHübelbauer在评论中指出它.