2015-11-28 2 views
5

У меня есть два компонента A и B. Я хочу переключиться между этими двумя компонентами на странице.Как состав запроса с союзами работает с родительским деревом, прошедшим через реквизит в Om Следующий

(defui A) 
(defui B) 

Одно из решений состоит в использовании родительский компонент C:

(defui C 
    (render 
    (let [{:keys [activeView]} props] 
    (if (= activeView 'A') 
     (renderA) 
     (renderB))))) 

Проблема заключается в запросе. C необходимо запросить как для A, так и для B, хотя один из них отображается.

Мне нужно C, чтобы либо не участвовать в запросе, либо запросить только для A или B.

ли это так, или есть обходные пути:

  • Ребенок компонент может только запросить свои реквизиты, которые пропускают его родителем.
  • Родительский компонент должен запрашивать своих детей, чтобы он мог передавать их детям.
  • Только корневой компонент запрашивает app-state.

ответ

2
  • Ребенок компонент может только запросить свои реквизиты, которые пропускают его родителем.

    • в вашем контексте, да, это правда. Тем не менее, он может обращаться к ключам состояния верхнего уровня, используя ссылки. См. Это tutorial для получения дополнительной информации.
  • Родительский компонент должен запрашивать своих детей, чтобы он мог передавать их детям.

    • Лучше, родительские компоненты объединяют запросы своих детей, составляя корень. Корневой компонент должен иметь полный запрос для приложения (это то, что означает «запросы к корню»)
  • Только корневой компонент запрашивает состояние приложения.

    • Не совсем. Корневой компонент получит все реквизиты и отвечает за передачу их на подкомпоненты, но сам запрос о состоянии приложения выполняется в методе парсера read.

Я советую вам сделать все учебники в Om Next Wiki для лучшего понимания того, как делать вещи правильно.

Что касается вашей конкретной проблемы, вы всегда можете сделать C реализовать IQueryParams и иметь запрос текущего субкомпонента (либо A, либо B) в параметре запроса.

Смежные вопросы