React Hook 如何实现当子组件 props 不变不随父组件一起重渲染?
关注者
41
被浏览
57,976
11 个回答
当Parent re-render时,Child也会re-render,除非以下2种情况之一发生:
-
父组件渲染的JSX tree中,在某个位置使用的
<Child/>
对象(react element,即React.createElement()
返回的对象)与上次渲染时相同 (在同一个位置使用同一个对象引用) ,这时Child组件不会re-render。 - Child组件被 React.memo 装饰,并且传给Child组件的props与上次渲染相同。
-
这种情况可以理解为
React.memo
帮我们缓存了上次渲染时使用的<Child/>
jsx element对象。即:
const Component = React.memo(({count}) => {
console.log('Component re-render')
return <div>Count: {count}</div>
})
等价于
const Component = ({count}) => {