Component 的2个问题
- 只要执行 setState(),即使不改变状态数据,组件也会重新 render()==>效率低
- 只要当前组件重新 render(),就会自动重新 render 子组件,纵使子组件没有用到父组件的任何数据==>效率低
原因
Component 中的 shouldComponentUpdate() 总是返回 true
效率高的做法
只有当组件的 state 或 props 数据发生改变时才重新 render()
解决
カ法一
重写 shouldComponentUpdate() 方法
比较新旧 state 或 props 数据,如果有变化才返回 true,如果没有返回 false
カ法二
使用 PureComponent
PureComponent 重写了 shouldComponentUpdate(),只有 state 或 props 数据有变化才返回 true
注意
只是迸行 state 和 props 数据的浅比校,如果只是数据対象内部数据变了,返回 false
不要直接修改 state 数据,而是要生成新数据
项目中一般使用 PureComponent 来优化