美文网首页
react之setState函数

react之setState函数

作者: 麦子_FE | 来源:发表于2017-10-19 15:59 被阅读475次

在react中,想要修改一个状态会使用到setState函数,它是一个异步函数。

setState函数除了接收对象,还接收函数。

多次调用setState()传入对象

count默认为0,当我们传入对象

this.setState({count:1}, ()=>{console.log(this.state.count) })

this.setState({count:2}, ()=>{console.log(this.state.count) })

其实控制台会打印两个2。

分析:

当我们多次调用setState,react不会重复去做‘set-state’的动作,而是将我们传递的对象合并为一个新的对象,然后再去做‘set-state’。

多次调用setState()传入函数

count 默认为0

this.setState(function(state, props) {

       return {

           count: state.count + 1

       }

})

this.setState(function(state, props) {

      return {

          count: state.count + 1

     }

})

结果为 count 变为2

分析:

当setState接收函数的时候,它会将传入的函数放进一个队列,依次执行,而不是将其合并。

setState异步更新

当我们调用setState时,会执行enqueueSetState方法对partialState和_pendingStateQueue更新队列进行合并操作,最终通过enqueueUpdate执行state更新。

视图更新

perfromUpdateIfNecessary方法获取_pendingElement,_pendingStateQueue,_pendingForceUpdate,并且调用receiveComponent和updateComponent方法进行组件更新。

相关文章

  • 2018-11-20 React setState同步更新

    react的setState特点: react中的setState特点: 1. 异步操作函数; ...

  • react之setState函数

    在react中,想要修改一个状态会使用到setState函数,它是一个异步函数。 setState函数除了接收对象...

  • React setState

    当组件的 setState 函数被调用之后,会发生什么 ? 在代码中调用setState函数之后,React 会将...

  • 04-react-state和setState

    react-state和setState state setState updater 可以是一个函数也可以是一个...

  • react面试题

    调用 setState 之后发生了什么? 在代码中调用setState函数之后,React 会将传入的参数对象与组...

  • 总结

    react 1.setState到render是经历了怎样的过程。setState的回调函数。我的理解。setSt...

  • React 篇之浅谈 setState is异步OR同步

    React 篇之浅谈 setState is异步OR同步   react 篇主要是记录笔者之前在使用 React ...

  • 解决react-native中setState同步更新

    setState 同步更新 为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序...

  • react 面试常见问题

    1.react的生命周期 2.调用 setState 之后发生了什么? 在代码中调用setState函数之后,Re...

  • 关于React中的setState

    前言 在看React setState 详解中看到一道有意思的题目,关于setState函数中state的值的问题...

网友评论

      本文标题:react之setState函数

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