【发布时间】:2021-07-12 05:34:28
【问题描述】:
React 文档对useMemo 进行了以下说明
您可以依赖 useMemo 作为性能优化,而不是作为 语义保证。未来,React 可能会选择“忘记”一些 先前记忆的值并在下次渲染时重新计算它们,例如 为屏幕外组件释放内存。编写您的代码,以便它 没有 useMemo 仍然可以工作 - 然后添加它以优化性能。
useCallback 有以下行:
useCallback(fn, deps) 等价于 useMemo(() => fn, deps)。
“等价”这个词对我来说有点模糊,我不知道这是否也意味着useCallback 不提供语义保证。
【问题讨论】:
-
未来的版本还没有写出来,所以我猜
useCallback也仍然悬而未决,除非他们在某处明确说明 -
如果你的记忆函数有副作用,不要相信 react 不会重新运行它。添加条件检查。
-
其实每一个react hook(可能除了useState)都应该有一个很大的提示——“除非你知道自己在做什么,否则不要使用”;)
标签: javascript reactjs