成都网站建设哪家专业,公司装修款账务处理,酒泉网站建设优化,私域流量代运营公司1、为什么需要setState
setState的作用是帮助我们更改数据的同时并且通知视图进行渲染。因为React并不会绑定视图和state#xff0c;需要我们手动去更新视图。
2、setState什么时候是同步的#xff0c;什么时候是异步的
setState这个方法在调用的时候是同步的#xff0c;…1、为什么需要setState
setState的作用是帮助我们更改数据的同时并且通知视图进行渲染。因为React并不会绑定视图和state需要我们手动去更新视图。
2、setState什么时候是同步的什么时候是异步的
setState这个方法在调用的时候是同步的但是引起React的状态更新是异步的。在React中如果是由React引发的事件处理比如是通过onClick引发的事件处理,以及生命周期函数调用setState调用setState不会同步更新this.state除此之外的setState调用会同步执行this.state。 所谓除此之外指的是绕过React通过addEventListener直接添加的事件处理函数还有通过setTimeout/setInterval产生的异步调用。
原因
在 React 的 setState 函数实现中会根据一个变量 isBatchingUpdates 判断是直接更新 this.state 还是放到队列中回头再说而 isBatchingUpdates 默认是 false也就表示 setState 会同步更新 this.state但是有一个函数 batchedUpdates这个函数会把 isBatchingUpdates 修改为 true而当 React 在调用事件处理函数以及生命周期函数之前就会调用这个 batchedUpdates造成的后果就是由 React 控制的事件处理过程 setState 不会同步更新 this.state。 React 的 batchUpdate 机制会在每一个方法执行之前设置一个 isBatchingUpdate 为 true在方法执行结束之后设置 isBatchingUpdate 为 false 。那么当在执行 setState 这句代码的时候如果 isBatchingUpdate 是 true就命中了 batchUpdate 机制会进行 “异步更新”反之则是 “同步更新”。
3、setState的参数
setState(updater, [callback])setState 可以接受两个参数第一个参数可以是一个对象或者是一个函数都是用来更新 state。如果需要对state数据更改监听就可以使用第二个参数它是用来监听state里面数据的更改当数据更改完成调用回调函数用于可以实时的获取到更新之后的数据。