Redux в целом
В редуксе состояние вашего приложения представляется в виде одного объекта, который передается вашему приложению.
Этот единственный объект создается одной функцией, которая называется редуктор .Эта функция принимает текущее состояние и текущее действие в качестве аргументов и возвращает новый объект , который представляет новое состояние, измененное после того, как действие уменьшено .
Это похоже наArray.prototype.reduce
где вы получаете текущий массив (текущее состояние) текущей записи массива (текущее действие) и возвращаете новый аккумулятор (новое состояние) в зависимости от того, что является текущим аккумулятором и записью (состояние и действие).
Объединение редукторов
Тем не менее, это не значит, что вам нужно объединить всю логику вашего приложения в одной функции.Redux имеет помощника combineReducers
, который позволяет вам создавать редукторы для различных частей вашего состояния, а затем объединять их в single reducer, который создает single объект состояния.
Например, для приложения блога с постами и комментариями вы можете использовать его следующим образом:
import { combineReducers, createStore } from 'redux';
import postsReducer from './postReducer';
import commentsReducer from './commentsReducer';
const rootReducer = combineReducers({
posts: postsReducer,
comments: commentsReducer,
});
const store = createStore(rootReducer);
Где postReducer
и commentsReducer
- два отдельных редуктора, каждый из которых обрабатывает свою часть состояния.