我知道我不应该直接在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在评论中指出它.
Yuv*_*val -1
强烈建议不要直接改变状态。另外,您正在改变以前的状态,然后返回它,这没有多大意义。如果您想要的只是切换状态,state[id]则将代码修复为更像:
onSocialClick = e => {
const id = e.target.value;
this.setState({this.state[id]: !this.state[id});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1805 次 |
| 最近记录: |