码迷,mamicode.com
首页 > 其他好文 > 详细

6.1 React组件 Component的两个问题

时间:2021-02-27 13:08:59      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:loading   原来   react   状态   com   set   state   info   改变   

1 Component的两个问题:

  1 只要执行 setState(),即使不改变状态数据,组件也会重新render()===》 效率低。

  2 只要当前组件重新render(),就会自动重新渲染render子组件,即使子组件没有使用到父组件的任何数据。 ===》效率低 。

1 只要执行setState(),哪怕是空,也会重新。 2 父子组件,渲染子组件。

 

2 那么应该怎么修改问题呢?

  只有在组件的state 或者 props数据发生改变的时候 才重新render()

 

3 原因 :

  Component 的shouldComponentUpdate返回的是true

 

4 解决:

  办法1: 重写shouldComponentUpdate()方法。(新就state或者props没有变换,返回false)

  办法2 : 使用PureComponent(component 这人里面的sholueComponent竟然不行,阀门不行)

      PureComponent重写了方法。

    注意:

      1只是state和props数据的浅层次比较,如果是内部局数据变了,返回false。

      2所有不要修改state的数据,二十产生新的数据。

 

 

this.setState({  carName:‘ maibahe‘]  })    // 重新构建一个新对象。开辟一个新的对象。

但是 const obj = this.state

obj.carName ='maibaim'

this.setState(obj)

 不要和原来的对象发生任何关系。

push,unshift。

同一个人,人家的阀门就是关闭的!

( { arr:['小刘',...stu]}) //添加一个。新数组!

 

技术图片

 

6.1 React组件 Component的两个问题

标签:loading   原来   react   状态   com   set   state   info   改变   

原文地址:https://www.cnblogs.com/hacker-caomei/p/14453552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!