通过键(字符串)检索 atom/selector?

Retrieve an atom/selector by key (string)?

使用 Recoil.js 时,通过 atom() 包含键(字符串)的对象创建原子:

const textState = atom({
  key: 'textState', // unique ID (with respect to other atoms/selectors)
  default: '', // default value (aka initial value)
});

稍后可以通过将 atom() returns 传递给 useRecoilState:

之类的东西来获取值(和 setter)
function TextInput() {
  const [text, setText] = useRecoilState(textState);

我需要先使用 atom() 创建原子,但之后我想使用字符串键获取值(和 setter)。我在想象这样的事情:

function TextInput() {
  const [text, setText] = useRecoilState('textState');

这个用例是我可以在有意义的地方(即更高层次)创建我的所有原子(和选择器),然后让组件访问该状态,而不必包含来自最初创建它们的文件。

是否可以使用钥匙(string/text)获得后坐力 atoms/selectors 的 value/setter 功能,而不必手动 useRecoilState() (等等)从 atom()?

返回的东西

不,这不可能。调用 atom() returns 的值是对状态的引用,useRecoil... 挂钩需要访问它。这也不适用于需要参数来访问特定原子的 atomFamilies

我也不确定会有什么好处。如果你愿意,你仍然可以在层次结构中的某个地方创建原子。我也不确定你所说的“不必包含最初创建它们的文件中的原子”是什么意思。那会有什么问题?

Recoil 的整个想法是让状态树与您的组件树正交,因此无需在层次结构中创建更高层。原子是在运行时需要的地方创建的。 感觉你想要更多类似 redux 的模式,在组件树中的一个位置创建原子,这违背了 recoil 的核心思想,这种思想将它与更像状态管理模式的通量区分开来。