gpt4 book ai didi

javascript - Reactjs 中的状态没有更新

转载 作者:行者123 更新时间:2023-12-03 01:22:10 24 4
gpt4 key购买 nike

我正在尝试从initialShapes 状态更新finalShapes 状态,但遇到finalShapes 未更新的问题。我正在 initalShapes 状态中进行一些更改,然后将操作的数据存储在 FinalShapes 中。请告诉我我做错了什么

this.state.initialShapes.map (sh => {
var data = {};
data.name = sh.name;
data.x1 = sh.x;
data.y1 = sh.y;
data.x2 = sh.x + sh.width;
data.y2 = sh.y + sh.height;
this.setState ({finalShapes : [...this.state.finalShapes, data]});
});

最佳答案

您不会在循环中更新状态,因为它不会立即更新状态。这意味着循环的下一次迭代将看不到更新的状态

ReactDocs :

setState() does not always immediately update the component. It may batch or defer the update until later. This makes reading this.state right after calling setState() a potential pitfall.

您可以复制initialShapes并更新一次状态

var updatedShapes = this.state.initialShapes.map (sh => {
var data = {};
data.name = sh.name;
data.x1 = sh.x;
data.y1 = sh.y;
data.x2 = sh.x + sh.width;
data.y2 = sh.y + sh.height;

return data;
});

this.setState ({finalShapes : updatedShapes });

关于javascript - Reactjs 中的状态没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728701/

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