gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:56:25 25 4
gpt4 key购买 nike

我在这个领域看到了类似的问题,但我的问题与这些不同,因为我不直接从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com