首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useCallback有语义保证吗?

useCallback有语义保证吗?
EN

Stack Overflow用户
提问于 2020-11-04 17:59:20
回答 1查看 484关注 0票数 8

React文档显示了关于useMemo的以下内容

--您可以依赖useMemo作为性能优化,而不是作为语义保证。在未来,React可能会选择“忘记”一些以前记忆过的值,并在下一次呈现时重新计算它们,例如释放屏幕外组件的内存。编写代码,使其在没有useMemo的情况下仍然工作--然后添加它以优化性能。

对于useCallback,有以下一行:

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

“等效”这个词对我来说有点模糊,我不知道这是否也意味着useCallback没有提供语义保证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-04 22:12:43

如果useMemo的返回值是一个函数,则useCallback等于useMemo

代码语言:javascript
复制
// The return value of `useMemo` is calculated every time deps change
useMemo(() => {
  return () => { // do some stuff }
}, [deps])

// The function block within `useCallback` is redefined every time deps change
useCallback(() => {
  // do some stuff
}, [deps])

我不知道为什么他们会为此做单独的挂钩,但我想他们在技术上也在做同样的事情。

至于语义保证,我想说他们可能会用useCallback做同样的事情来“释放一些内存”,但是函数内存消耗并不比实际数据重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64685349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档