reactjs - useEffect 和 useMemo 之间的区别

标签 reactjs react-hooks

我正在尝试了解 useMemo() React hook 到底是什么。

假设我有这个useMemo:

const Foo = () => {
  const message = useMemo(() => {
    return readMessageFromDisk()
  }, [])

  return <p>{message}</p>
}

这不是与使用 useState()useEffect() Hook 完全相同吗?

const MyComponent = () => {
  const [message, setMessage] = useState('')
  
  useEffect(() => {
    setMessage(readMessageFromDisk())
  }, [])

  return <p>{message}</p>
}

在这两种情况下,useMemouseEffect 只会在依赖项更改时调用。

如果两个片段相同:useMemo 的好处是什么

这纯粹是上述 useEffect 代码片段的简写符号吗?或者使用 useMemo 还有其他好处吗?

最佳答案

useEffect 用于在依赖项更改时运行代码块。一般来说,您将使用它在组件安装和/或每次监视特定 propstate 更改时运行特定代码。

useMemo 用于在依赖项发生变化时计算并返回一个值。您将需要使用它来记住复杂的计算,例如过滤数组。这样,您可以选择仅在每次数组更改时计算过滤后的数组(通过将其放入依赖项数组中),而不是每次渲染。

useMemo 与上面的 useEffect 示例执行相同的操作,只不过它在后台运行的方式上具有一些额外的性能优势。

关于reactjs - useEffect 和 useMemo 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71925654/

相关文章:

css - 如何在 Material UI 选项卡中有多个行选项卡

reactjs - 如何将Electron应用程序部署为Windows中的可执行文件或可安装文件

reactjs - React fetch 有错误 fetch 被 CORS 策略阻止

javascript - 将对象数组作为 React 组件的 Prop

javascript - 延迟样式组件中的 css 动画不透明度

reactjs - 使用react-hooks仅重新渲染一个 child

reactjs - SessionStorage 不会通过挂载时调用的 useEffect 更新状态

reactjs - 如何防止用户返回 ReactJs 中的登录路由?

javascript - React hook 表单方法 - setValue - 不起作用

reactjs - 如何从钩子(Hook) react 组件中获取 TextField(Material-UI) 值?