我正在使用 React 开发一个网络应用程序,并看到它在那里实现。事情是这样的:
const onAddNewAccount = useCallback(async () => {
await refetch();
setOtherState((prev) => {...});
},
[refetch]);
我不明白为什么要这样做,这实际上是正确的吗?因为据我了解,回调将在依赖项之一发生变化时调用。
据我所知,调用 refetch
实际上不会触发 useCallback
,可能是因为它只是被调用了,对吧?没有改变。
所以基本上我需要帮助理解他们为什么这样做。
最佳答案
the callback will be called on one of the dependencies changing.
不,它不会被调用,它只会被重新创建。 useCallback
的目的是记住该函数并在没有任何更改的情况下重用它。换句话说,它试图使渲染 1 中的 onAddNewAccount
=== 渲染 2 中的 onAddNewAccount
。
如果refetch
发生变化,那么内存将会中断并创建一个新函数。这样,新的 onAddNewAccount
可以在需要时调用新的重新获取。如果 refetch
永远不会改变,那就太好了:那么内存就可以永远持续下去。
关于javascript - React useCallback 设置对回调内调用的函数的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70114453/