Получайте данные также за пределами компонентов React из хранилища Relay.js.

У меня есть вариант использования, когда я хочу использовать некоторые данные из хранилища реле вне компонентов реакции. Вот и думаю, как получить данные в какой-нибудь магазин.

Одним из вариантов было бы поместить эти данные в «хранилище» в компоненте, как только компонент получит данные.

Но я хотел бы больше иметь возможность создавать хранилище, похожее на реагирующий компонент, который определяет свои требования, но не отображает и может быть запрошен из любого другого файла.

Я думал, что могу использовать для этого компонент реакции, но для создания экземпляра компонента мне нужно отобразить его в dom, что в этой ситуации не имеет смысла.

Любые идеи, как добиться этого красиво?


person Jarda    schedule 16.10.2015    source источник


Ответы (2)


Я думаю, это именно то, что вам нужно: acdlite/relay-sink

person methyl    schedule 17.10.2015
comment
Отлично, спасибо за ссылку. Кажется, что в настоящее время это единственный способ - использовать реагирующий компонент для sink данных из реле. - person Jarda; 19.10.2015
comment
В идеале вы должны использовать Relay.Store методы для извлечения/чтения произвольных данных. В настоящее время это невозможно, поскольку тип RelayQuery, на который они полагаются, является внутренним/приватным. Так было в первоначальном выпуске, потому что мы хотели сделать область поверхностного API небольшой и иметь очень четко определенное поведение, чтобы мы могли делать такие вещи, как сборка мусора на основе подписанных компонентов. Мы хотим сделать это более гибким в будущем. Не стесняйтесь открыть проблему GitHub с вашим вариантом использования, если вы хотите что-то наглядное чтобы отслеживать это. - person wincent; 20.10.2015

Если вы имеете дело с данными, я предлагаю вам изучить шаблон потока. Это позволит вам отделить логику данных от логики представления.

person J. Mark Stevens    schedule 16.10.2015
comment
Я широко использую поток и все еще использую для обработки локальных данных, но если я извлекаю все данные на стороне сервера через Relay.js, и мне просто нужны определенные данные, выходящие из компонента реакции, я не хочу извлекать их отдельно и использовать старые шаблоны, если бы я мог получить их прямо из магазина Relay. Итак, что я сейчас делаю, так это то, что я передаю эти данные в своем корневом компоненте React в это хранилище, чтобы к ним можно было получить доступ в других местах, но думаю, что это может быть лучше, как описано в моем вопросе. - person Jarda; 16.10.2015
comment
Мне действительно нужно уделять больше внимания. Я еще не создал проект ретрансляции, поэтому скоро поговорю. - person J. Mark Stevens; 16.10.2015