useCallback在函数组件里用不对,为什么子组件一直重新渲染?
我在用React函数组件时,给子组件传了一个用useCallback包裹的回调函数,依赖数组也写对了,但每次父组件状态变化子组件还是重新渲染,这是为什么啊?
代码大概是这样的:
const Parent = () => {
const [count, setCount] = useState(0);
const handleUpdate = useCallback(() => setCount(c => c+1), []);
return ;
};
子组件接收callback后直接用在事件里,但每次点击父组件的其他按钮时,Child里的useEffect还是会触发。明明回调函数没变啊,哪里出问题了?
React.memo包裹子组件,确保只有当props真正变化时才重新渲染。这样就能避免不必要的重新渲染了。