2016-02-11 1 views
0

Скажем, у меня есть HomeController и Menu (компонент).Дисплей логики, в контроллере или компоненте?

Я знаю, что все опоры должны появляться сверху вниз и быть неизменными. Однако, скажем, мне нужно, чтобы меню отображало все ссылки, которые предназначены для определенного меню, если логика фильтрации идет в меню или в контроллере?

По существу этот код: var items = menus.filter((item) => { item.name === 'main'; });

ответ

0

Трудно сказать, что правильный путь без дальнейшего контекста:

А. логики внутри меню (контроллер) Если у вас есть полный компонент меню обертки (можно назвать «menu-controller»), который может определять внутренне, какое меню отображать и в какой структуре, то оператор фильтра может находиться внутри компонента меню.

Вся необходимая информация должна быть передана в качестве элементов меню.

Ваше заявление (внутри компонента меню) будет выглядеть примерно так:

var items = this.props.menus.filter((item) => { item.name === this.props.pagename; }); 

это будет хорошим способом, чтобы избежать раздутого HomeController и получить ремонтопригодны и многоразового меню на каждой странице.

B. Логика внутри HomeController Если поведение меню является

  • очень специфично для дома, и меню не очень многоразовое между страницами
  • зависит от различных других параметров Главной

Тогда, вероятно, лучше придерживаться принципа MVC, согласно которому логика должна быть внутри контроллера и содержать компоненты как чистые (и немые), насколько это возможно. В этом случае:

  • let HomeController позволяет выбрать нужные элементы меню для отображения и построить структуру меню.
  • передать настроенное меню (items) в компонент меню
  • Компонент меню просто отображает элементы, которые он получает (без фильтров).
Смежные вопросы