setState的理解

264 阅读1分钟

setState的用法

  • 最常见的用法就是传入一个对象。
       this.setState({
              peco:handsome
       })
  • 还可以接收一个函数
this.setState((prevState,props)=>{
        // 要做的事件
        return {peco:handsome};
    })
  • 因为setState是异步的,所以它还可以接收第二个参数,一个回调函数
       this.setState({count:2},()=>{
              isLoading:this.state.count===2 ? true : false
       })

setState存储状态类似EventLoop,推荐文档

setState为什么是异步?

当被问及到这个问题时很多人想的是reason,而不是setState作为异步的advantage(个人理解存在即合理)

一、保证内部的一致性

  • 无论 setState() 是同步的还是异步的。那么就算让 state 同步更新,props 也不行,因为当父组件重渲染(re-render )了你才知道 props。

二、性能优化

  • React 会依据不同的调用源,给不同的 setState() 调用分配不同的优先级。调用源包括事件处理、网络请求、动画等。

三、支持state在幕后渲染

  • 异步可以使state在幕后更新,而不影响你当前旧的页面的交互,提升用户体验。

setstate在原生事件,setTimeout,setInterval,promise等异步操作中,state会同步更新。()