Reducer - инструмент для управления состоянием в React
Reducer - это функция, которая принимает предыдущее состояние (state) и действие (action), а затем возвращает новое состояние. Она является частью парадигмы управления состоянием, которая широко используется в различных фреймворках и библиотеках, таких как Redux в React и NGRX в Angular.
Пример кода на JavaScript, использующий Redux и редьюсер:
javascript
// определение начального состояния
const initialState = {
counter: 0
};
// определение редьюсера
const counterReducer = (state = initialState, action) => {
switch (action.type) {
case 'INCREMENT':
return { ...state, counter: state.counter + 1 };
case 'DECREMENT':
return { ...state, counter: state.counter - 1 };
default:
return state;
}
};
// создание хранилища Redux
const store = Redux.createStore(counterReducer);
// диспетчеризация действий
store.dispatch({ type: 'INCREMENT' });
console.log(store.getState()); // { counter: 1 }
store.dispatch({ type: 'DECREMENT' });
console.log(store.getState()); // { counter: 0 }
В этом примере редьюсер `counterReducer` принимает состояние `state` и действие `action`. В зависимости от типа действия, он возвращает новое состояние путем изменения значения `counter` в объекте. Изменения состояния происходят с использованием распылений (`...state`), чтобы сохранить все остальные свойства состояния неизменными. При вызове диспетчера `dispatch` с определенным действием, таким как `INCREMENT` или `DECREMENT`, новое состояние доступно через вызов `getState` хранилища Redux.