#recoiljs
Вопрос:
При использовании Recoil.js, один создает атом, передавая atom()
объект, содержащий ключ (строку):
const textState = atom({
key: 'textState', // unique ID (with respect to other atoms/selectors)
default: '', // default value (aka initial value)
});
Позже можно получить значение (и установщик), передав вещь, которая atom()
возвращается к чему-то вроде useRecoilState:
function TextInput() {
const [text, setText] = useRecoilState(textState);
Это нормально, что мне нужно сначала создать атом с помощью atom()
, но после этого я хотел бы получить значение (и установщик), используя строковый ключ. Я представляю себе что-то вроде этого:
function TextInput() {
const [text, setText] = useRecoilState('textState');
Вариант использования для этого заключается в том, что я мог бы затем создать все свои атомы (и селекторы) в местах, которые имеют смысл (т. Е. Выше по иерархии), а затем предоставить компонентам доступ к этому состоянию без необходимости включать атомы из файла, который их изначально создал.
Можно ли получить функцию установки значений для атомов/селекторов отдачи с помощью ключа (строки/текста) вместо того, чтобы передавать useRecoilState()
(и т. Д.) Возвращенную вещь atom()
?
Ответ №1:
Нет, это невозможно. Значение, atom()
возвращаемое вызовом, является ссылкой на состояние, необходимое useRecoil...
крючкам для доступа к нему. Это также не будет работать с atomFamilies
тем, для которого необходим параметр для доступа к определенному атому.
Я также не уверен, в чем будет заключаться выгода. Вы все еще можете создавать атомы где-то наверху иерархии, если захотите. Я также не уверен, что вы подразумеваете под «без необходимости включать атомы из файла, который их изначально создал». В чем может быть проблема с этим?
Вся идея отдачи состоит в том, чтобы иметь дерево состояний, ортогональное вашему дереву компонентов, поэтому нет необходимости создавать что-то выше по иерархии. Атомы создаются там, где они необходимы во время выполнения. Такое ощущение, что вы хотите иметь больше шаблонов, подобных redux, с атомами, создаваемыми в одном месте в дереве компонентов, что противоречит этой основной идее отдачи, которая отличает ее от более похожих на потоки шаблонов управления состоянием.