相关疑难解决方法(0)

React 钩子常量的 useMemo 与 useState

使用 React 钩子定义计算的(初始化的)常量可以通过两种看起来功能等效的方式来执行。我不想讨论这个用例,但我只想说,在某些情况下,可以从初始道具或预期不会改变的状态派生出一个常量值(想想路由数据、绑定调度等)。

第一的, useState

const [calculatedConstant] = useState(calculateConstantFactory);
Run Code Online (Sandbox Code Playgroud)

第二, useMemo

const calculatedConstant = useMemo(calculateConstantFactory, []);
Run Code Online (Sandbox Code Playgroud)

这两个看起来在功能上是等效的,但是如果不阅读源代码,我不确定在性能或其他考虑方面哪个更好。

有没有人做过这方面的工作?你会使用哪个,为什么?

另外,我知道有些人会因为状态可以“被认为是恒定的”的假设而退缩。我不知道该告诉你什么。但即使没有状态,我也可能想在一个完全没有状态的组件中定义一个常量,例如,创建一个不会改变的 JSX 块。

我可以在组件之外定义它,但是它会消耗内存,即使有问题的组件没有在应用程序的任何地方实例化。为了解决这个问题,我必须创建一个记忆功能,然后手动释放内部记忆状态。对于钩子免费提供给我们的东西来说,这真是太麻烦了。

编辑:添加了本讨论中讨论的方法的示例。 https://codesandbox.io/s/cranky-platform-2b15l

reactjs react-hooks

11
推荐指数
1
解决办法
2873
查看次数

useEffect 和 useMemo 之间的区别

我正在尝试弄清楚useMemo()React hook 到底是什么。

假设我有这个useMemo

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

  return <p>{message}</p>
}
Run Code Online (Sandbox Code Playgroud)

useState()这不是和使用and钩子完全一样吗useEffect()

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

  return <p>{message}</p>
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,只有当依赖项发生变化时才会调用useMemoand 。useEffect

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

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

reactjs react-hooks

3
推荐指数
1
解决办法
3060
查看次数

标签 统计

react-hooks ×2

reactjs ×2