通过键(字符串)检索 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 的核心思想,这种思想将它与更像状态管理模式的通量区分开来。
使用 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:
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 的核心思想,这种思想将它与更像状态管理模式的通量区分开来。