在上面的例子里有这么一行:
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();
});
网友评论