2

根据文档, https://recoiljs.org/docs/api-reference/core/RecoilRoot

<RecoilRoot>接受道具作为initializeState?: (MutableSnapshot => void)签名。
能够初始化 Recoil State 所以我想使用这个道具,但我不明白如何制作MutableSnapshot对象。

import {RecoilRoot} from 'recoil';

function AppRoot() {
  return (
    <RecoilRoot initializeState={/* How to setup arguments here? */} >
      <ComponentThatUsesRecoil />
    </RecoilRoot>
  );
}

另一方面,虽然Snapshot更容易获得useRecoilSnapshot()

4

1 回答 1

4

我自己想出问题的答案。MutableSnapshot 由 Recoil 库代码自动传递,因此用户不必自己创建 MutableSnapshot 对象。

波纹管代码通常是 initializeState 的用法。使用对象解构从 MutableSnapshot 中选择您需要的参数(设置、获取等),然后编写您的状态初始化代码。

  render(
    <RecoilRoot
      initializeState={({ set }: MutableSnapshot): void =>
        set(recoilState, initialRecoilStateValue)
      }
    >
      {ui}
    </RecoilRoot>
  )
于 2020-11-28T12:46:41.010 回答