2015-12-12 2 views
0

Я столкнулся с дилеммой «делаю это правильно» и могу использовать некоторые знания. У меня есть родительский компонент:Реактивный поток посылает данные из дочернего компонента в родительский

<Articles> 

и внутри этого компонента, я рендеринг дочернего компонента для каждой статьи:

<Article> 

Когда Article нажата, я хочу, чтобы отправить articleId в родительский компонент <Articles>. Компонент <Articles> собирается отправить все, что ему нужно, чтобы вернуться к моему ArticleStore для обработки данных и испустить назад к моему <Articles> компоненту.

Мой вопрос, это нормально, чтобы передать мой articleId непосредственно родителю, или с тех пор я использую Flux архитектуру, я должен отправить вам articleId в магазин, а затем пусть магазин испускают articleId обратно в родитель?

+1

Я не профессионал. Но я думаю, что это зависит от свойства этих данных. Если эти данные быстро изменятся и не будут использоваться в других компонентах. Достаточно просто передать его родительскому компоненту. –

+0

Да, я думаю, что вы правы, так как нет фактических изменений данных, состояние приложения не изменится, поэтому действительно не нужно уведомлять магазин. Я думаю, что теперь у меня есть правильный путь. Спасибо за ваш ответ @KitFung – doubleya

ответ

1

Для того, чтобы оставаться в курсе проблем, компонент Article не должен иметь прямого знания о его родителях. Таким образом, единственный способ связи с родителем Articles - это обратный вызов, переданный от Articles (например, articleIdChangeHandler). Затем обратный вызов может делать все, что вам нужно, включая настройку articleId как состояние в Articles или отправку articleId в магазин.

Как правило, вы не хотите подвергать действия Flux компонентам нижнего уровня, поэтому вы, вероятно, не хотите напрямую отправлять от Article.

Следует ли сохранять единственный источник истины articleId как состояние в Articles или в магазине Flux всегда интересный вопрос. Чаще всего я нахожу, что такие вещи, как articleId, нуждаются в более глобальном объеме, чем я изначально думал, поэтому он может начинаться как состояние компонента, но часто заканчивается в магазине в конце концов.

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