为什么你的 React 组件总是重复渲染?深入 useCallback 和 useMemo 的依赖陷阱
在用 React 开发列表和表单时,经常遇到一个现象:父组件状态一变,所有子组件都跟着重渲染,哪怕传给子组件的 props 完全没变。为了避免这种浪费,很多人会在子组件上套 React.memo,然后在父组件里用 useCallback 包裹事件处理函数。但写完之后发现,子组件依然在重渲染,甚至有人把 useCallback 的依赖数组写成空数组,导致回调里拿到的永远是第一次渲染时的 state。这个问题在真实项目里非常高频,尤其是当组件树层级变深、回调里引用了多个状态或 props 时,依赖数组的维护就变成了一种负担。文章会从一次典型的重复渲染案例出发,分析 useCallback 和 us...