记一次react的setState错误

87 阅读1分钟

react中的setState可能是同步的也可能是异步的,这是由于为了让多个react一起运行节省性能。 故setState更改状态后无法立即获取更改后的状态,但如果后面依赖于更改的状态的话,可以使用以下的形式。

    this.setState({a:!this.setState.a},()=>{
        .....在这里获取更改后的值
    })

这次的问题是getDerivedStateFromProps()返回的state是无法进行setState进行更改,这是由于setState重新更改页面后会触发getDerivedStateFromProps(),故还会是最先一次状态值。 解决方案:由于我的页面是依据这个值进行更改的,故我拆分成两个组件,每次外面的进行更改传入props,在getDerivedStateFromProps()中进行获取。