首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React.memo根本不运行

React.memo根本不运行
EN

Stack Overflow用户
提问于 2021-04-02 19:54:23
回答 1查看 110关注 0票数 0

我无法让React.memo工作-下面是我想要做的一个简单的演示

代码语言:javascript
复制
import {memo} from 'react'

function BadComponent({a}) {
    return <div>{a}</div>
}

function areEqual(prev,next) {
    console.log('This is never run')
    return prev.a === next.a
}

export default memo(BadComponent, areEqual)

然后,在家长中,我这样运行:

代码语言:javascript
复制
function Page(){
   const a = 1
   return <BadComponent a={a} />`
}

这样就没问题了。如果我使用devtools将支柱a从1更改为5,它不会运行areEqual函数。这里的例子- https://codesandbox.io/s/zen-frog-f1h9e?file=/src/App.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 20:18:57

最初,挂载areEqual不会运行(在这里进行比较没有多大意义)。它将在由父级触发的后续重发程序上执行。

如果您将App更改为如下所示(添加将触发按钮单击重登的状态),您将看到控制台日志触发:

代码语言:javascript
复制
export default function App() {
  const [a, setA] = useState(1)
  return (
    <div className="App">
      <BadComponent a={a}></BadComponent>
      <button onClick={() => setA(a => a + 1)}>change a</button>
    </div>
  );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66924560

复制
相关文章

相似问题

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