解决 setState 异步调用 后 this.state 值u

2019-02-26  本文已影响0人  海利昂

在上面的例子里有这么一行:

this.setState({ expanded: !this.state.expanded });

setState其实是异步的!React为了提高性能,会把多次调用的setState放在一起调用。所以,调用了setState之后state不一定会立刻就发生改变。

所以,调用setState的时候,你不能依赖于当前的state值。因为i根本不知道它是值会是神马。

解决方法:给setState传入一个方法,把调用前的state值作为参数传入这个方法。看看例子:

this.setState(prevState =>({ expanded: !prevState.expanded }))

或者 

this.setState({conversation:data,messages:data.messages},()=>{

    // this.scroll();

});

上一篇 下一篇

猜你喜欢

热点阅读