面试题答案
一键面试useCallback Hook优化性能原理及减少不必要重新渲染的方式
- 原理:
useCallback
返回一个记忆化的回调函数。它接受两个参数,第一个是要记忆的回调函数,第二个是依赖项数组。- 只有当依赖项数组中的值发生变化时,
useCallback
才会返回一个新的回调函数。否则,它将返回上一次记忆的回调函数。这是基于浅比较实现的,React 会对依赖项数组进行浅比较来判断是否需要更新回调。
- 减少不必要重新渲染:
- 在 React 中,当一个组件的 props 发生变化时,该组件及其子组件可能会重新渲染。如果一个组件接收一个作为 prop 的回调函数,而这个回调函数在父组件每次渲染时都重新创建,那么即使父组件其他数据没有变化,只要父组件重新渲染,子组件就会因为接收到新的回调函数 prop 而重新渲染。
- 使用
useCallback
可以确保回调函数在依赖项不变时保持不变。这样,当父组件重新渲染但依赖项未改变时,传递给子组件的回调函数还是原来的引用,子组件就不会因为接收到新的回调函数 prop 而触发不必要的重新渲染,从而提升性能。