首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件内部React.memo()与支柱函数的使用

组件内部React.memo()与支柱函数的使用
EN

Stack Overflow用户
提问于 2022-08-15 14:11:00
回答 1查看 433关注 0票数 0
代码语言:javascript
复制
import React, { useState } from 'react'

const App = () => {
  const [count, setCount] = useState<number>(0);
  const [otherCount, setOtherCount] = useState<number>(0);

  const increment = () => {
    setCount((pre) => {
      return pre + 1
    })
  }

  const decrease = () => {
    setOtherCount((pre) => {
      return pre - 1
    })
  }
  return (
    <>
      <DecrementComponent decrease={decrease} />
      <br />
      <br />
      <IncrementComponent increment={increment} />
    </>
  )
}

const DecrementComponent = React.memo(({ decrease }: { decrease: () => void; }) => {
  console.log("DecrementComponent");
  return (
    <div>
      <button onClick={decrease}>Decrement</button>
    </div>
  )
})

const IncrementComponent = React.memo(({ increment }: { increment: () => void; }) => {
  console.log("IncrementComponent");
  return (
    <div>
      <button onClick={increment}>Increment</button>
    </div>
  )
})

export default App

**React.memo()虽然使用了React.memo(),但当我单击增量或递减函数时,呈现了两个组件。但我认为在这个场景中应该呈现出一个成分。为什么呈现两个组件?**

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 14:13:57

只有当道具不改变时,React.memo才能提供帮助。但是incrementdecrement函数在每次渲染时都会发生变化,所以道具总是在变化。你将需要回忆录这些功能,这样它们就不会改变。

代码语言:javascript
复制
const increment = useCallback(() => {
  setCount((pre) => {
    return pre + 1
  });
}, []);

const decrement = useCallback(() => {
  setCount((pre) => {
    return pre - 1
  });
}, []);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73362190

复制
相关文章

相似问题

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