美文网首页
解决 setState 异步调用 后 this.state 值u

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

作者: 海利昂 | 来源:发表于2019-02-26 10:06 被阅读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();

    });

    相关文章

      网友评论

          本文标题:解决 setState 异步调用 后 this.state 值u

          本文链接:https://www.haomeiwen.com/subject/asmxsftx.html