美文网首页
关于setState()数据更新

关于setState()数据更新

作者: 小鱼仔_5858 | 来源:发表于2019-03-13 16:47 被阅读0次

执行setState()之后干了什么?

setState()方法通过一个队列机制实现state更新,当执行setState()的时候,会将需要更新的state合并之后放入状态队列,而不会立即更新this.state(可以和浏览器的事件队列类比)。如果我们不使用setState而是使用this.state.key来修改,将不会触发组件的re-render。如果将this.state赋值给一个新的对象引用,那么其他不在对象上的state将不会被放入状态队列中,当下次调用setState()并对状态队列进行合并时,直接造成了state丢失。

Object.assign({}, { a:2,b:3}, {a:1,c:4});

对象合并的操作,属性值将会以最后设置的属性的值为准,如果发现之前存在相同的属性,那么,这个属性将会被后设置的属性所替换。所以,也就不难理解为什么我们调用了两次 setState() 之后,count 依然只增加了 1 了。

但是如果执行函数,就得到不一样的结果~

与传入对象更新 state 的方式不同,我们传入函数来更新 state 的时候,React 会把我们更新 state 的函数加入到一个队列里面,然后,按照函数的顺序依次调用。同时,为每个函数传入 state 的前一个状态,这样,就能更合理的来更新我们的 state 了。

相关文章

  • 08react基础-react原理

    setState()更新数据 setState()更新数据是异步的 注意:使用该语法,后面的setState不要依...

  • 『react』setState()特性

    一.setState()更新数据 由于setState()更新数据是异步的,所以后面的setState()不要依赖...

  • 关于setState()数据更新

    执行setState()之后干了什么? setState()方法通过一个队列机制实现state更新,当执行setS...

  • react拓展

    setState() setState更新状态的2种方式 对象式的setState 函数式的setState 对象...

  • this.setState更新问题

    this.setState是异步的,所以在this.setState之后不能立刻得到最新的state数据关于如何获...

  • Flutter setState更新数据,PageView子控件

    问题: setState更新数据,PageView子控件没更新 原因: State对象的要点是它在构建之间是持久的...

  • 2019-05-04 React 生命周期

    vanillaJS例子react生命周期例子 1.请求数据(ajax)2.更新数据(setState)3.事件监听...

  • setState相关

    - setState相关 setState是同步执行的,但是state不一定同步更新 多次执行setState,...

  • React_setState

    setState : 修改组件内变量。 优点 可以对更新进行优化。(异步更新)setState会将大批量的更新进行...

  • 【React】—setState机制

    概述: setState通过一个队列机制实现state更新。 当执行setState时,会将需要更新的state合...

网友评论

      本文标题:关于setState()数据更新

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