useMemo 与 useCallback 在反应中?

时间:2021-03-31 01:45:52

标签: reactjs

我试图理解 useMemo 和 useCallback 之间的区别,以及文档“useCallback(fn, deps) 等效于 useMemo(() => fn, deps)”中的这个语句。

所以在useMemo中,我必须传递一个返回函数的函数?在 useCallback 中,我只是返回一个函数。我得到了 useCallback,但我不确定 useMemo 和这个返回函数的函数(或者我是否都错了)。阅读 SO 帖子在这里还没有帮助。

如果 useMemo 正在调用一个返回函数的函数,那么 react 中的第二个函数是什么时候调用的?

2 个答案:

答案 0 :(得分:1)

如果您想记住一个函数,您将使用 useCallback,语法:useCallback(fn, deps)。 但是如果你想记住函数的返回,那么你应该使用useMemo,语法:useMemo(() => fn(), deps)

现在如果我比较以下语句中的两种语法

<块引用>

useCallback(fn, deps) 等价于 useMemo(() => fn, deps)

此处对于 useMemo,您没有调用 fn,因此您获得的是该函数本身而不是它的返回值。在这种情况下,useCallback(fn, deps)useMemo(() => fn, deps) 都会为您提供记忆的 fn

答案 1 :(得分:0)

使用备忘录

返回一个记忆值。 意味着它为您提供了价值的参考股权。

useCallback

返回一个记忆的回调。 意味着它为您提供了函数的引用公平性。