老师下面这段的逻辑不明白,老师能不能画一个数据流的图给讲解一下呢?
onClick={()=>{
this.setState({ count: this.state.count + 1 }, () => { console.log("s",this.state.count); });
this.setState({ count: this.state.count + 1 }, () => { console.log("d",this.state.count); });
// Output:
// w 0
// s 1
// d 1
// w 1
// s 2
// d 2
console.log("w",this.state.count);
}}老师上面那段就是外层的log输出语句和两个个setState是异步的,三个语句同时出发,外层的输出语句执行完、新的state设置完之后再执行callback回调函数,这样理解对吧

下面这段的逻辑不明白,老师能不能像上面一个画一个数据流的图给讲解一下呢?
onClick={()=>{
setState 的第一个参数可以是对象,也可以是函数,函数的第一、二个参数分别是上一个生命周期的的state和props
this.setState((preState,preProps)=> {return{ count: preState.count + 1 }}, () => { console.log("s",this.state.count); });
this.setState((preState, preProps) => { return { count: preState.count + 1 }}, () => { console.log("d",this.state.count); });
// Output:
// w 0
// s 2
// d 2
// w 2
// s 4
// d 4
// 这一句比上面setState的回调函数里面的内容先执行,因为这一句跟setState同时执行(setState本身异步操作),setState处理完state之后回调函数才执行
console.log("w",this.state.count);
}}上一个state的count是0,外层的log语句输出0,两个setState也是同时执行,为什么最后回调函数出来的都是2?
18
收起
正在回答 回答被采纳积分+1
1回答
相似问题
登录后可查看更多问答,登录/注册

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星