首页 > 解决方案 > this.setState 在 this.setState 的回调中没有设置状态

问题描述

我有 2 个列表项,它们使用相同的<ListItem />组件this.props.a = truethis.props.b = true从父组件传递给它(提到有 2 个,因为我不确定是否会弄乱任何东西,但它们每个都应该有自己的独立组件状态)。

<ListItem />组件中,我有一个_handleOnClick功能。当_handleOnClick函数被触发时,检查组件状态会显示a: falseb:true尽管我看到got here在我的控制台中登录。

我本来希望this.setState({ b: false })在回调中被调用,并且状态更改为a: falseand b:false。我错过了什么?

export default class ListItem extends PureComponent {
    state = {
        a: this.props.a, //this.props.a is true
        b: this.props.b, //this.props.b is true
    };

    _handleOnClick = () => {
        this.setState({ a: !this.state.a }, () => {
            if (!this.state.a && this.state.b) {
                console.log('got here')
                this.setState({ b: false })
            }
        });
    };

...
}

标签: javascriptreactjs

解决方案


你为什么不试试这个

this.setState((prevState, props) => {
//add your stuff here by matching it with previous state
})

推荐阅读