【问题标题】:Recoil - how to update an atom with socket.io correctlyRecoil - 如何使用 socket.io 正确更新 atom
【发布时间】:2021-01-15 07:09:09
【问题描述】:

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

【问题讨论】:

  • 如果您征求意见是相当困难的,最好检查一下您尝试过的方法并从那里开始提供更好的方法
  • 唯一的方法是通过选择器。否则 React 不会收到有关更改的通知。

标签: react-native recoiljs


【解决方案1】:

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

但是,如果您最终仍然真的需要更新 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 以获取实时示例。

【讨论】:

  • 点赞。 Recoil Nexus 是一个很好的后坐力补充!
猜你喜欢
  • 2021-04-16
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
相关资源
最近更新 更多