setState笔记

242 阅读1分钟

setState是异步的

  1. 在一个事务中重复setState会放到同一个事件队列中,然后合并操作state
  2. setState(partialState, callback)
    1. 第一个参数传函数
    onClick(){
        this.setState((prevState, props) => ({
          count: prevState.count + 1
        }));
        this.setState((prevState, props) => ({
          count: prevState.count + 1
        }));
    }
    
    1. 通过setState将setState放到事件队列中,在setTimeout回调执行时已经完成了原更新组件流程,不会放入dirtyComponent进行异步更新,其结果自然是同步的
    onClick(){
        setTimeout(() => {
            this.setState({
              count: prevState.count + 1
            });
            this.setState({
              count: prevState.count + 1
            });
        }, 0)
    }
    
    1. 通过setState的回调函数来依次更新
    incrementCount(){
        this.setState({
          count: prevState.count + 1
        },() => {
            this.setState({
              count: prevState.count + 1
            });
        });
    }