React - setState 不更新值

IT技术 reactjs
2021-05-15 04:29:32

我正在尝试使用 DidMount 中的 localStorage 值更新状态,但它没有更新:

type Props = {
};

type State = {
    id_evaluation: string,
};

class Evaluation extends Component < Props, State > {
    state = {
        id_evaluation: '',
    }

    componentDidMount() {
        const id_eval = getEvaluation();
        console.log('1 - ', id_eval)

        this.setState({
            id_evaluation: '1',
        });

        console.log('2 - ', this.state.id_evaluation)

在第一个 console.log 中,我的值为 1,在第二个中它保持为空,它不更新状态。

3个回答

那是因为您在状态更新之前调用了 console.log。试试这个:

this.setState({
  id_evaluation: '1',
}, () => {
  console.log('2 - ', this.state.id_evaluation);
});

看到这个线程:

我可以在 setState 更新完成后执行函数吗?

setState异步工作,以便通过console.logcallback得到更新状态。

this.setState({ id_evaluation: '1'}, () => console.log('2- ', this.state.id_evaluation));

当用作您的代码时,console.log('2 - ', this.state.id_evaluation)打印的是以前的状态而不是更新的状态。

this.setState 是一个异步函数。

 this.setState({
        id_evaluation: '1',
 }, () => console.log('2 - ', this.state.id_evaluation));

回调函数可以解决您的问题。