javascript - 不要直接改变状态。使用 setState()

标签 javascript reactjs

我在这个领域看到了类似的问题,但我的问题与这些不同,因为我不直接从 this.state 设置状态。 我的代码是

state = {
count: 0};

handleIncrement = product => {
    console.log(product);
    this.setState({ count: ++this.state.count });
};

如你所见,我没有直接设置状态,而是在这一行给了我这个错误

最佳答案

当你这样做时:

++this.state.count

这会尝试直接改变状态,因为您正在尝试这样做:

this.state.count = this.state.count + 1

这会更改状态的当前值,但您应该使用 setState 来执行此操作,而不是像错误所述那样直接执行。

这样做:

this.setState({ count: this.state.count + 1 });

作为最佳实践,use a callback避免竞争条件,例如:

this.setState(prev => {
    return {
        count: prev.count + 1,
    };
});

关于javascript - 不要直接改变状态。使用 setState(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578333/

相关文章:

javascript - 如何使用钩子(Hook)/函数滚动到元素?

reactjs - 如何在表格行按钮上打开模式并在模式中访问表格数据,在 AntD Reactjs 中

wordpress - 大的 redux 状态会影响我的应用程序的性能吗?

javascript - ImmutableJS 设置不扁平化

javascript - 使用 javascript 从多维数组中删除反向值

javascript - 背景图像不应出现在下拉菜单的标题中

javascript - React Router V4 浏览器返回不工作

javascript - Bootstrap 导航栏后面的空间

javascript - Node.JS - MySQL 模块无法识别

reactjs - 使用Redux在组件之间共享登录状态