PureComponent 会对 props 和 state 进行浅层比较,并减少了跳过必要更新的可能性。
React.PureComponent 与 React.Component 很相似。
两者的区别在于 React.Component 并未实现 shouldComponentUpdate(),而 React.PureComponent中以浅层对比 prop 和 state 的方式来实现了该函数。
如果赋予 React 组件相同的 props 和 state,render() 函数会渲染相同的内容,那么在某些情况下使用 React.PureComponent 可提高性能。
1 | import React from 'react'; |
上面演示的代码中 Counter 组件中使用了 Title 组件,Counter 组件每次修改状态都会导致 Title 组件重新渲染。可以看到 console 语句多次打印出 Title render。如果不想让 Title 组件多次渲染,就需要让 Title 组件继承 PureComponent 组件。
开始使用
- 类组件使用
PureComponent
1 | import React from 'react'; |
- 函数组件使用
memo
1 | class Counter extends React.Component { |
memo的原理
1 | function memo (Func) { |
PureComponent的原理
1 | import React, { Component } from 'react'; |