我必须更新 React 组件之外的原子(我不能使用钩子)。为了在我的订阅 React 组件中使用 useRecoilState 等钩子获取更新的值,正确的方法是什么?
问问题
877 次
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 回答