如何从Scratch实施自己的useMemo,用于React

问题描述 投票:0回答:1

基本上是这样:

function MyComponent() {
  let [count, setCount] = useState(1)
  let memo = useMyMemo(() => new MyClass)

  return <div onClick={update}>{count}</div>

  function update() {
    setCount(count + 1)
  }
}

function useMyMemo(fn) {
  // what to do here?
}

class MyClass {

}

我希望useMyMemo仅返回类每个组件实例的1个实例。我该如何设置它以实现它而又不使用任何现有的React钩子呢?如果没有React钩子是不可能的,为什么?如果只有通过访问内部API才有可能,您将如何做?

作为奖励,了解如何传递属性依赖关系以及如何使用它来确定备忘录是否应无效将很有帮助。

javascript reactjs memoization internals
1个回答
0
投票

[我想您正在假设useMemo已经起作用,假设您将[]作为依赖项参数进行传递。每个MyClass实例应该已经创建了一个MyComponent实例。但是,文档说useMemo的未来版本不能保证该值仅被调用一次,因此您可能想尝试useRef

© www.soinside.com 2019 - 2024. All rights reserved.