React useCallback设置依赖于回调内部调用的函数



我正在使用react开发一个web应用程序,并在那里看到了它的实现。它是这样的:

const onAddNewAccount = useCallback(async () => {
await refetch();
setOtherState((prev) => {...});
},
[refetch]);

我不明白为什么要这样做,这真的是正确的吗?因为据我所知,回调将在其中一个依赖项发生变化时调用。

根据我所看到的,调用refetch实际上不会触发useCallback,可能是因为它调用得对吗?没有改变。

所以基本上我需要帮助理解他们为什么这么做。

将在其中一个依赖项发生更改时调用回调。

不,它不会被调用,只会被重新创建。useCallback的目的是存储函数,并在没有任何更改的情况下重用它。换言之,它正试图使渲染1中的onAddNewAccount==渲染2中的onAddNewAccount如此。

如果refetch发生变化,则记忆将中断,并创建一个新函数。这样,如果需要的话,新的onAddNewAccount可以调用新的refetch。如果refetch永远不会改变,那就太好了:记忆可以永远持续下去。

最新更新