После обработки действия, которое приходит к функции редуктора, я меняю тип действия в соответствии с выполняемой операцией. Было бы проблемой, если мы думаем, что функции редуктора должны быть чистыми? Чтобы убедиться, что функция редуктора не растет, и что входящие данные вносят избыточное изменение в состояние один раз.
простой пример, показывающий, что я имею в виду:
const lineReducer = (state = [], action) => {
switch (action.type) {
case 'ADD_LINE':
action.type = 'INC';
return [...state,action.payload];
case 'UPDATE_LINE':
return state.map(vehicle => vehicle);
case 'TAKE_VEHICLE_IN_LINE':
action.type = 'DEC';
return state.filter(vehicle => vehicle.id !== action.payload);
default:
return state;
}
}
const lineStatsReducer = (state = 0, action) => {
switch (action.type) {
case 'INC':
return state + 1;
case 'DEC':
return state - 1;
default:
return state;
}
}
compineReducer({
line: lineReducer,
stats: lineStatsReducer
});
Таким образом Мой компонент, связанный с количеством транспортных средств, не отображается при получении данных транспортных средств.