重新快速扫了一遍 react 的文档,发现文档里多了一个useEffectEvent的函数,在入门文档里还多次提到。
源码如下 https://github.com/sanity-io/use-effect-event/blob/main/src/useEffectEvent.ts
这个貌似是 ahooks 的 useMemoizedFn 全方位弱化版。
- 只在 Effect 内部调用他们。
- 永远不要把他们传给其他的组件或者 Hook 。
就是说这个使用范围限得很死干不了 useCallback 的活,而 useMemoizedFn 可以完全替代 useCallback 和 useEffectEvent 。
看了眼二者的源码,主要区别是 useEffectEvent 只有在 render 后才有值,所以不能马上用,这和 useCallback 不同。
那问题来了,为什么 react 要出这个垃圾版 useEffectEvent/useCallback 而不是 ahooks 的终级版呢?应该是有我想不到的理由,或者我的理解有什么不对的地方?