05-react中setState详解,react性能优化

为什么使用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中判断


高阶函数memo

state数据不可变性

直接修改state不进行scu优化

 直接修改的问题

推荐方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值