共计 640 个字符,预计需要花费 2 分钟才能阅读完成。
关于 react 的 useEffect,如果我要监听一个值,并且在值变化的时候做一些函数调用
useEffect(()=>{if(type === aaa){aHandle();
}else if(type === bbb){bHandle();
}
}, [type])
那我就需要把 aHandle 和 bHandle 放入依赖项中, 否则 eslint 或者 sonarlint 会报警告
useEffect(()=>{if(type === aaa){aHandle();
}else if(type === bbb){bHandle();
}
}, [type, aHandle, bHandle])
那这样岂不是每次 render,都会重新生成新的 ahandle 和 bHandle,每次都会触发 useEffect 吗?
我知道有 useCallback 和 useRef 可以解决函数在每次 render 都重新生成的问题,但问题是假如我在 aHandle 里去调接口,也要获取很多放在 state 中的值作为参数,那么 useCallback 还得把那些值全部放在 useCallback 的依赖项里,搞得越来越复杂了。
难道只能用 useRef 或者基于 useRef+useCallback 封装的一些 hook,把每个 aHandle 或者 bHandle 给套上吗。
有没有更优雅一点的写法,我想要有一个 useXXXEffect, 可以只监听一个 type,在这里面获取到的其他值都是最新的,不再额外需要传入 aHandle 或者 bHandle。
有没有这样的 hook 或者封装成这种效果的 hook
正文完