首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React.memo与未失效功能部件的失效

React.memo与未失效功能部件的失效
EN

Stack Overflow用户
提问于 2020-07-24 23:45:53
回答 1查看 304关注 0票数 0

我有一个用React.memo包装的React功能组件,如下所示

代码语言:javascript
复制
const SpeakerDetail = React.memo(
  ({ record, prop1 }) => {...

当我调用这个组件时,我会这样做

代码语言:javascript
复制
const record = {prop1: 'abcd', prop2: 'efgh', prop3: 'ijkl'};
const Speakers = () => {
   ...
   return(
      <SpeakerDetail record={record} prop1={record.prop1}></SpeakerDetail>
   )...

假设我的prop1在呈现之间确实发生了变化,上述代码将按预期工作,这意味着React.memo将创建一个新的副本,而不使用它的缓存版本。

问题是,如果我不将prop1显式地作为一个单独的参数传递,React.memo缓存版本就不会识别记录的属性已经更改。

是否有一种方法不需要传递这个冗余属性才能使React.memo重新计算?

这感觉像是一个很深/浅薄的拷贝问题,但我不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-25 00:06:07

临时备忘录

memo自组织只对传递的道具进行简单的浅层引用相等检查。您可以指定一个相等函数作为memo HOC的第二个参数,如果比较返回相同的结果,则使用返回true的上一个和下一个道具,否则为false。

代码语言:javascript
复制
const SpeakerDetail = React.memo(
  ({ record, prop1 }) => {...},
  (prevProps, nextProps) => {
    if (prevProps.record.prop1 !== nextProps.record.prop1) return false;
    return true;
  },
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63082812

复制
相关文章

相似问题

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