如何创建 Recoil MutableSnapshot?

How to create Recoil MutableSnapshot?

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

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

import {RecoilRoot} from 'recoil';

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

另一方面,Snapshot 更容易从 useRecoilSnapshot() 获得。

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

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

  render(
    <RecoilRoot
      initializeState={({ set }: MutableSnapshot): void =>
        set(recoilState, initialRecoilStateValue)
      }
    >
      {ui}
    </RecoilRoot>
  )