• 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
    
  • 相关阅读:
    Python使用pymysql模块插入数据报错
    layui的select标签样式没有加载出来
    Python计算平均数
    Django获取小时内的数据
    mysql5.0忘记登录密码
    数据库介绍
    Linux基础
    测试理论
    计算机基础
    chrome 70 一下载文件就卡死
  • 原文地址:https://www.cnblogs.com/ashen1999/p/13896584.html
Copyright © 2020-2023  润新知