我试图理解 useMemo 和 useCallback 之间的区别,以及文档“useCallback(fn, deps) 等效于 useMemo(() => fn, deps)”中的这个语句。
所以在useMemo中,我必须传递一个返回函数的函数?在 useCallback 中,我只是返回一个函数。我得到了 useCallback,但我不确定 useMemo 和这个返回函数的函数(或者我是否都错了)。阅读 SO 帖子在这里还没有帮助。
如果 useMemo 正在调用一个返回函数的函数,那么 react 中的第二个函数是什么时候调用的?
答案 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)
返回一个记忆值。 意味着它为您提供了价值的参考股权。
返回一个记忆的回调。 意味着它为您提供了函数的引用公平性。