我知道我不应该直接在 React 中改变状态,但是当我使用函数时情况如何:
onSocialClick = e => {
const id = e.target.value;
this.setState((prevState, props) => {
prevState[id] = !(prevState[id]);
return prevState;
});
};
修改传递的对象是否错误?
EDIT:
事实证明,我们大多数人都错了。反应文档清楚地说明了这一点 https://reactjs.org/docs/react-component.html#setstate now:
state 是应用更改时组件状态的引用。不应该直接突变。相反,应该通过基于状态和道具的输入构建新对象来表示变化
感谢@Tomáš Hübelbauer 在评论中指出这一点。
更简洁的方法是直接引用您想要编辑的属性:
doIt = () => this.setState(({ [id]: prevValue }) => ({
[id]: !prevValue,
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)