React Hook 如何实现当子组件 props 不变不随父组件一起重渲染?

前端小白一枚,今天刚学习了react hook,顿时深感很好很强大,相见恨晚,但由此引发一个疑问,class组件可以通过shouldComponent…
关注者
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}) => {