状态未在Reactjs中更新

时间:2018-08-07 14:03:52

标签: javascript reactjs

我正在尝试从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]});
});

1 个答案:

答案 0 :(得分:1)

您不会循环更新状态,因为它不会立即更新状态。这意味着循环的下一次迭代将看不到更新的 private View.OnClickListener clicked = new View.OnClickListener(){ @Override public void onClick(View view) { //Insert Code here } };

ReactDocs

  

btn = new Button(this); btn.setOnClickListener(clicked); 并不总是立即更新组件。它可能会批量更新或将更新推迟到以后。这使得在调用state之后立即阅读setState()是一个潜在的陷阱。

您可以复制this.state并更新一次状态

setState()