zoukankan      html  css  js  c++  java
  • React--setState是同步还是异步?

    在react中,原生js监听事件中的setState是同步的,如addEventListener、setTimeout等
    而在react控制的事件处理函数中,setState是异步的,如onClick等

    setState有两种设置方式,

    1. setState传入对象,直接修改state中的数据
    2. setState中传入两个函数,第一个函数有两个参数,第一个参数是当前的state,第二个参数是当前的props,返回的是要修改的state对象,类似于第一种设置方式;第二个函数是更新后的回调函数。

    react是如何控制同步还是异步?

    react中是根据isBatchingUpdates来设置同步or异步。而isBatchingUpdates默认为false,即默认同步更新。其中有batchedUpdates函数,用来设置isBatchingUpdates

    多次连续设置会合并处理

    state:{foo : 10}
    let foo1 = this.state.foo
    this.setState({foo: foo1 + 1})
    this.setState({foo: foo1 + 1})
    this.setState({foo: foo1 + 1})
    // 在最后foo依然为11 因为所有都合并到一次更新,state中的foo只改变了一次
    

    函数传参解决合并问题

    state:{foo : 10}
    function increment(state, prop){
       return {
          foo: state.foo + 1
       }
    }
    this.setState(increment)
    this.setState(increment)
    this.setState{increment)
    // foo为13
    
  • 相关阅读:
    Objective-C代码规范
    Http中Get/Post请求区别
    使用Vitamio打造自己的Android万能播放器
    Vitamio
    图片瀑布流
    TCP与UDP
    SQLite基本操作总结
    IOS文件操作的两种方式:NSFileManager操作和流操作
    JSON和XML
    一些iOS常用的第三方库和控件及第三方框架还有动画
  • 原文地址:https://www.cnblogs.com/ashen1999/p/13896584.html
Copyright © 2011-2022 走看看