通过键字符串检索原子/选择器?

问题描述

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

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

稍后可以通过将 atom() 返回的东西传递给 useRecoilState 之类的东西来获取值(和 setter):

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

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

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

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

是否有可能使用键(字符串/文本)来获取反冲原子/选择器的值/设置器函数,而不必手动 useRecoilState()(等)从 {{1} 返回的东西}}?

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...