官方demo写的很清楚
当需要记住一个回调时,使用usePersistFn。比如 你需要传递一个回调给子组件时,如果使用useCallback,只要useCallback的依赖发生改变,就会触发函数更新,就会触发子组件渲染。这样子肯定不是我们期望的。
这个时候使用usePersitstFn就能解决这个问题
3种区别
// 1. 直接创建const cb1 = () => {console.log(count)}// 2. useCallbackconst cb2 = useCallback(()=>{console.log(count)},[count])// 3. usePersistFnconst cb3 = usePersistFn(() => {console.log(count)})
简单的来说cb2是cb1的优化,cb3是cb2的优化
- 当3个函数分别创建在一个组件内,只要存在更新,cb1就会变化,有所依赖cb1的也都会触发变化,相关render
- count 发生变化,cb2相关变化和触发相关render
