react中this.setState的理解

Posted liuxiaodi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react中this.setState的理解相关的知识,希望对你有一定的参考价值。

最近重新整理了一下react知识点,以前博客的内容太乱了,正好趁换博把内容重新整理一下子.

只要写react项目,就必然用到this.setState,那么setState了解多少?setState执行后触发了那些方法?这里做一下解答

作用:

this.setState是用来改变state的方法,因为在react中是单项数据流,我们不能直接修改state,需要使用this.setState

 

写法:

this.setState(()=>{return {}},()=>{})

this.setState({},()=>{})

第一个参数用于异步修改state,第二个函数是当state修改完成后,执行的方法,类比componentDidUpdate

 

异步:

this.setState在某些条件下是异步的,在某些条件下是同步的.因为react对原生事件做了包装,生成了合成事件,在合成事件中因为某些特殊的处理,使得setState是异步的;而在原生事件中由于没有这些处理,导致setState是同步执行的.

异步的好处:

setState的异步是为了批量处理state,在react中会有一个队列,在队列内部排列着setState方法,react会将一段时间内要修改的state合并,只执行一次setState方法

 

setState执行后触发了那些函数

我们知道setState执行后会触发render渲染,但并不只是render这一个生命周期,具体是:

setState->shouldComponentUpdate->componentWillUpdate->render->componentDidUpdate

以上是关于react中this.setState的理解的主要内容,如果未能解决你的问题,请参考以下文章

react面试题——理解setState(源码object.assign)

[react] 请说说你对react的render方法的理解

关于生命周期里执行setState

关于this.setState( )中的数据延迟问题(参考为个人笔记)

从带有回调的 this.setState 调用迁移到 useState 和 useEffect

在 React JS 的 this.setState 的回调中使用 this.setState?