Вам нужен только 1 редуктор для хранения ваших задач.
Как можно назвать редукцию единым состоянием, если каждый редуктор имеет свое собственное индивидуальное состояние.
Приложение фактически имеет только 1 глобальное хранилище, в котором хранится все состояние приложения. То, что возвращает редуктор, - это то, что эффективно сохраняется в хранилище.
Конфигурация того, что хранится, является картой (ключ-значение), где ключ определен в редукторе root, а значение - это то, что возвращается из функция редуктора.
То, как вы должны смотреть на него, заключается в том, что представление «немое», в котором единственное, что он делает, - сообщает приложению, чего оно хочет, отправляя действие. Это действие является просто событием, которое помечено некоторой строкой, которую вы даете ему, чтобы четко определить, чего хочет представление. Редуктор перехватывает это действие и соответственно обновляет состояние в хранилище. Это состояние, в свою очередь, доступно для всех компонентов вашего приложения. Так что это явно глобально.
В вашем примере представление просто скажет приложению, например: «Добавить задачу». Редуктор перехватит это сообщение и вернет массив с добавленным todo. Этот возвращенный массив - то, что будет сохранено в магазине.
Если вы хотите отдельное «todo», это, вероятно, будет относиться к текущему «активному». Отметив его как таковой, вы сделаете цель более выразительной.
Это единичное состояние, потому что ваш root редуктор в конечном итоге будет выглядеть примерно так:
{
"activeTodo": activeTodoReducer
"todos": todosReducer
}
И вы можете получить доступ к этим ключам / значениям в вашем компоненты во всем приложении.