javascript - React useCallback 设置对回调内调用的函数的依赖

标签 javascript reactjs typescript react-hooks

我正在使用 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/

相关文章:

TypeScript:将一个界面转换为另一个界面

javascript - 即使在编译错误后,Typescript 编译器也会生成 javascript

javascript - 使用 contenteditable

javascript - React Rails 组件 : manually triggering a re-render

带有自定义组件的 Angular 包裹 Angular Material 选项卡组件

javascript - JavaScript 中的字符串替换(如查询绑定(bind))

javascript - 如何制作一个简单的 Firefox 插件,它只在每个新页面上执行独立的 JS 脚本?

javascript - 以 url 作为数据源的对象仅在 IE11 中以损坏的样式呈现

reactjs - 为什么当状态更新时渲染中的变化没有更新?

node.js - Webpack、开发中间件和静态文件