javascript - React.memo() 是 useMemo() 的薄包装吗?
问题描述
在这篇文章中,作者使用useMemo()
来记忆组件的一部分,而不是使用PureComponent
or React.memo()
。作者声称:
将 useMemo 应用于返回的 JSX 元素树与在没有侵入式组件重构的情况下应用 memo HOC 具有相同的效果
React 文档中的一个示例似乎也支持这种方法:
方便的是,useMemo 还可以让您跳过对孩子进行昂贵的重新渲染:
function Parent({ a, b }) { // Only re-rendered if `a` changes: const child1 = useMemo(() => <Child1 a={a} />, [a]); // Only re-rendered if `b` changes: const child2 = useMemo(() => <Child2 b={b} />, [b]); return ( <> {child1} {child2} </> ) }
这让我很好奇:只是React.memo()
一个方便的包装useMemo()
吗?它是否保证相同的行为?
例如,React 文档中的另一个页面说:
如果你封装的函数组件在其实现中
React.memo
有一个useState
,useReducer
或useContext
Hook ,它仍然会在状态或上下文发生变化时重新渲染。
包裹在子组件中是否也能保证这种行为useMemo()
?其他功能/非功能属性呢?
解决方案
推荐阅读
- python - Jinja2 嵌套循环模板,用于处理来自两个列表的 Ansible YAML 变量
- python - 如何方便地传递可以修改的全局设置
- django - 根据它们的值比较两个不同的类
- python - 如何生成带有截断条形的条形图?
- repast-simphony - Repast - 从另一个 java 程序调用模拟
- python - 使用动态字符串匹配从python中的文件中删除字符串部分?
- javascript - 如何利用/解决来自动态导入的承诺
- xml - 用逻辑计算 tr 的数量
- linux - 如何在 linux 中使用 mailx 命令和 ssh
- python - Pandas 某些列的反转顺序并非全部