用于将功能作为依赖性依赖性的用例中的用例
我开始学习做出反应,并遇到了代码片段,该代码段作为使用效率的依赖项数组传递。我想知道该功能通过作为依赖性传递的用例,为什么我们需要将功能作为依赖项传递?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我开始学习做出反应,并遇到了代码片段,该代码段作为使用效率的依赖项数组传递。我想知道该功能通过作为依赖性传递的用例,为什么我们需要将功能作为依赖项传递?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
首先:仅当
useffect
回调中的代码使用该函数时,这才有意义。因此,让我们将其作为基准。 :-)从根本上讲,您会这样做,因此
usefect
回调中的代码使用该函数的最新版本。以下是一些重要的示例:
可能还有其他功能功能。
First: This only makes sense if the code in the
useEffect
callback uses the function. So let's take that as a baseline. :-)Fundamentally, you'd do that so the code in the
useEffect
callback is using the most up-to-date version of the function.Here are a couple of examples where that would be important:
There are likely others, but they all boil down to ensuring the effect uses the most recent version of the function.
我还在学习反应和这篇文章了解
useffect
的依赖关系数组中的功能。在
中函数
< < /a>使用
我做出了一些清晰的代码示例。文章中的示例尚不清楚我无法理解。使用“控制台”选项卡查看控制台日志。
I am also learning React and this article helped me understand functions in the dependency array of
useEffect
.Functions in dependency array of
useEffect
I made a bit clear code example here. The example from the article was unclear for me to understand. Use the console tab to see the console logs.
这取决于
使用效果
的使用和函数的定义。基本上,如果您在useffect
数组中添加一个函数,则每次函数都会更改,或更准确,它的引用,您的效果将被新功能引用再次调用。如果您想始终使用最新功能,这很好,但也可能很棘手。如果传递的函数是在组件内定义的,则意味着在每个组件上渲染该函数都将被重新定义,这意味着您的效果将对每个组件渲染进行调用。有时可能很重,取决于您的效果。
但是,如果定义函数的组件使用
usecallback
,则仍然可以避免它。这样,该函数将具有自己的依赖关系数组,并且只有在您决定需要时才重新定义(并更改参考)。It depends on the use of the
useEffect
and the definition of the function. Basically, if you put a function inside auseEffect
array, each time the function will change, or more accurately, it's reference, your effect will be called again, with the new function reference.This is good in case you want to always use the latest function, but it can also be tricky. If the passed function is defined inside a component, it means that on every component render the function will be redefined, meaning your effect will be called on each component render. It can be heavy sometimes, depends on what your effect does.
It can still be avoided though, if the component in which the function is defined is using
useCallback
in order to memoize the function. This way, the function will have its own dependencies array, and will only be redefined (and change reference) when you decide it's needed.我有一个很好的用例,其中函数Current()返回当前语言代码,该语言代码是在另一个Utils模块中定义的函数,而不是内联函数定义了React组件本身
,我确实从Console中遇到了这样的错误:
I have a good use case where the function current() returns the current language code, which is a function defined in another utils module, not a inline function defined the React component itself
I did get such a error from Console: