1

我必须更新 React 组件之外的原子(我不能使用钩子)。为了在我的订阅 React 组件中使用 useRecoilState 等钩子获取更新的值,正确的方法是什么?

4

1 回答 1

3

您通常不想遇到这种情况:我建议您先仔细检查您的方法。

但是,如果您最终仍然真的需要更新 React组件之外的原子,您可以尝试使用Recoil Nexus

在您拥有 RecoilRoot 的同一个文件中,您将拥有类似的内容:

import React from 'react';
import { RecoilRoot } from "recoil"
import RecoilNexus from 'recoil-nexus'

export default function App() {
  return (
    <RecoilRoot>
      <RecoilNexus/>
      
      {/* ... */}
      
    </RecoilRoot>
  );
};


export default App;

然后您需要读取/更新值的位置:

import yourAtom from './yourAtom'
import { getRecoil, setRecoil } from 'recoil-nexus'

最终,您可以像这样获取和设置值:


const loading = await getRecoil(loadingState)

setRecoil(loadingState, !loading)

而已!


检查此CodeSandbox以获取实时示例。

于 2020-12-08T12:05:41.933 回答