为什么使用setState
我们直接修改state中数据,数据会被修改,但react监听不到,就不会重新渲染页面
我们必须通过setState告诉react数据已经发生改变
setState函数是从Component中继承过来的
setState异步更新
为什么设计异步
如何获得异步的结果
方法一,setState的第二个参数
方法二,componentDidUpdate
setState一定是异步吗?
setState数据的合并
当你使用setState时,有没有想过会吧state中数据覆盖掉
答:不会,是合并
setState本身合并
react更新机制
React在props或state发生改变时,会调用React的render方法,会创建一颗不同的树
React需要基于这两颗不同的树之间的差别来判断如何有效的更新UI:
如果完全比较两棵树,算法复杂程度为O(n)的3次方,成本太大
react做了优化
keys的优化
嵌套组件中 render函数的调用
shouldComponentUpdate生命周期函数
决定要不要重新调用render
类PureComponent
类组件继承PureComponent就行了,PureComponent类帮我们实现了在shouldComponentUpdate中判断
![](https://img-blog.csdnimg.cn/6b919c12a88448d8894eb3a9067348c4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv5LqR5ZGA77yB,size_20,color_FFFFFF,t_70,g_se,x_16)
高阶函数memo
state数据不可变性
直接修改state不进行scu优化
直接修改的问题
推荐方法