2016-10-29 2 views
2

Я просто обертывание моей головы вокруг Redux, и я просто хотел, чтобы запустить вопрос о том, как по state передаются редукторы:Redux - как состояние передается редукторам?

Я понимаю, что структура state диктуется функцией combineReducers() и что ключи, вы определяете внутри этой функции, станут различными свойствами state.

Правильно ли я говорю, что только Подмножество state, связанное с конкретным редуктором, передается на редуктор? Или прошел весь объект state?

Имея много моментов «ahahhh» с Redux ...!

ответ

2

combineReducers принимает ряд редукторов в качестве параметров и возвращает редуктор. Конкретный редуктор, созданный combineReducers, передает только часть состояния, присвоенного конкретному редуктору. Таким образом, каждый редуктор полностью отвечает за свою часть государства и не более того.

Но вы можете написать свой собственный combReducers, который может работать по-другому. Это просто сказать, что нет ничего особенного в отношении combineReducers.

Редуктор - это просто функция, которая принимает состояние и действие и возвращает состояние с действием, применяемым в некотором роде. Или нет, по своему усмотрению.

Например, в Redux для отдельных ветвей состояния принято обрабатывать одни и те же (множество) действия, но обрабатывать их по-разному, что имеет смысл для этой части состояния. Каждое действие передается всем субредукторам на combineReducers, что дает редукторам каждой ветви шанс либо что-то сделать, либо ничего.

Таким образом, в большинстве случаев редуктор несет исключительную ответственность за срез состояния и вспомогательных редукторов, таких как те, которые переданы в combReducers или редукторы, называемые вашими собственными редукторами, несут исключительную ответственность за их под-состояние/филиал.

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

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

combineReducers - это просто вспомогательная функция для общего использования. Наверное, самый чистый, чтобы сделать один редуктор ответственным за конкретную ветвь государства, но могут быть ситуации, когда вы считаете полезным делать что-то по-другому. Один редуктор может управлять сложным объектом с гнездом без вызова какого-либо другого редуктора, но общий шаблон - сделать меньшие редукторы для обработки деталей, если родитель становится громоздким.

Главное, чтобы понять, что редуктор всегда является чистой функцией, которая принимает состояние и действие и возвращает состояние. Как вы это делаете, это зависит от вас. Большинство разработчиков предпочитают следовать общим образцам, наблюдаемым в коде другого, например примерам Дэна Редукса или видео, которые он имеет на egghead.io.

Наступая на проторенную дорожку, часто это хороший способ начать работу, потому что он уже проверен.

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

Также read this статья Dan.

+0

Фантастически полезный ответ @DDS! Я понимаю все больше и больше каждый день ... Начну с стандартного подхода, позволяющего редуктору просто обрабатывать его собственное подмножество 'state' и посмотреть, не наткнулся ли я на какие-либо ограничения. Я подозреваю, что, если это самая лучшая практика в подавляющем большинстве ситуаций, это мне подойдет. Благодарю. –

+0

@ Ответ DDS замечательный. Вы также можете прочитать новый раздел [«Структурирующие редукторы»] (http://redux.js.org/docs/recipes/StructuringReducers.html) в документах Redux, в котором описывается ряд полезных шаблонов, рецептов , и распространенные ошибки. – markerikson

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