React 中 useCallback 和 useMemo 到底该不该加?从一次列表卡顿排查说起
上周排查了一个后台管理页面的卡顿问题,页面里有一个 200 行左右的数据表格,每行都渲染了一个带删除按钮的操作列。用户点击任意一行删除时,整个表格重新渲染,肉眼可见卡了半秒。打开 React DevTools 的 Profiler 录制后发现,明明只有一行数据变了,所有 200 行组件都重新执行了 render。团队里有人第一反应是“把事件处理函数用 useCallback 包一下”,也有人提议“整个表格套 React.memo”。但改完发现没什么效果,甚至因为加了一堆依赖数组导致 eslint 警告。后来仔细梳理了 props 传递链路,才发现问题出在一个每天都会踩的细节上:父组件每次 re...