常见问题:
明明子组件已经使用memo进行缓存了,为什么父组件数据发生改变时还是会造成子组件重新创建??
// 子组件
const MChildren = React.memo(Children)
//父组件
return(
//...
<MChildren getChildren={getChildren}></MChildren>
//...
)
原因:
这是因为父组件重新创建时,他内部的数据也会重新被创建,原来声明的函数也会被重新创建,这就导致原来函数的堆地址发送变化,故子组件也会被重新创建。
解决方法:
使用useCallback方法来解决
const getChildren = useCallback((name)=>{
console.log('getChildren',name);
},[])
将穿给子组件的函数用useCallback包裹起来就解决问题啦!!!!