Итак, сначала немного фона. Я родной разработчик iOS/Android, который сейчас начинает мой первый проект React Native. Он поставляется со всеми преимуществами и болями Javascript, но мне это очень нравится:-) Я решил также попробовать свои силы в GraphQL в первый раз.
Будучи новичком в среде React вообще, у меня также нет никаких предварительных знаний об Relay, но выбрал его по рекомендации друзей в моем сообществе автозагрузки и моих коллегах по веб-разработчикам. Я также был предупрежден о некоторой крутой кривой обучения, но решил пойти в любом случае - я уже сражаюсь в тяжелой битве с JS и версией новой мобильной платформы 0.xx, так что, черт возьми, да?:-) Мне удалось правильно настроить проект и перенести его на мой GQL-сервер с помощью QueryRenderer
, что было большим облегчением: -)
Итак, на вопросы
Мне сложно определить соотношение между контейнером и компонентом и состав контейнера в целом. Чтение документов по составу помогло, но я все еще сомневаюсь в роли QueryRenderer
-
QueryRenderer
говорят, что документы являются корневым контейнером для каждого дерева ретрансляции. Означает ли это, что для нашего корня в нашем приложении должен бытьQueryRenderer
? Или в корне каждого пути навигации (т.е. Вкладки в нашем приложении)? Или только для каждого компонента контейнера (в отличие от презентационных/немых/чистых компонентов, React wise)? Заметьте, что я не ищу мнения, но аргументы за лучшую практику: -) - Может ли
FragmentContainer
(или любой другой контейнер, если на то пошло) работать безQueryRenderer
в родительском компоненте? - Как связать
QueryRenderer
с дочерними контейнерами? Получает ли она сумму всех данных, которые нужны дочерним контейнерам, а затем дочерние контейнеры, считанные из кеша, или? Если это так, Ive неправильно понимает плюсы Relay - у нас создается впечатление, что каждый компонент может извлекать данные независимо от всех других компонентов и что каждый компонент ничего не знает о требованиях к данным других компонентов (включая родительские/дочерние компоненты). Я думаю, что это предположение также меня смущает оQueryRenderer
и необходимости в контейнере "Root". - Если
QueryRenderer
является корневым контейнером корня/родительского корня в дереве ретрансляции, каким образом он должен визуализировать компоненты представления на основе его запроса? И почему у него должен быть запрос? Когда и для чего следует использоватьQueryRenderer
?
Любая помощь очень ценится: -)