状态未在React JS中更新

时间:2020-06-01 04:28:58

标签: javascript reactjs react-native

下面是我的代码段

 this.setState({
  isConfirmationDialogOpen: false,
  progress: Progress.Saving
});

let state = { ...this.state };

但是它没有更新状态,有人可以告诉我我做错了吗。

2 个答案:

答案 0 :(得分:0)

 this.setState({
  isConfirmationDialogOpen: false,
  progress: Progress.Saving
});

let stateData = { ...this.state };

请勿使用与状态相同的名称,也可以使用setState中的回调方法来执行异步活动。

更新

如果您不想使用此回调,这是另一种方式。

const state = {
    isConfirmationDialogOpen: false,
    progress: Progress.Saving
};

this.setState(state);

并使用state对象,但这不能保证您具有最新状态,即this.state

答案 1 :(得分:0)

首先,this.setState是异步的。

setState()的第二个参数是可选的回调函数,将在setState完成并重新渲染组件后执行。

如果您尝试访问状态并希望更新状态,则由于它是异步的,因此您必须在回调函数中“必须”访问它,以确保仅在状态更新后才能访问状态。