Как можно улучшить High Order Reducer?

Добрый день! Скажите пожалуйста как можно улучшить этот High Order Reducer?
const funcReducer = (type, initState, name, payload) =>
  (state = initState, action = {}) => {
    switch (action.type) {
      case type[0]:
        return {
          [name]: {
            ...state[name],
            data: payload ? action.payload[payload] : state[name].data,
          },
        };
      case type[1]:
        return {
          [name]: {
            ...state[name],
            isOpen: true,
            data: !action.payload ? state[name].data : action.payload[payload],
          },
        };
      case type[2]:
        return {
          [name]: {
            ...state[name],
            isOpen: false,
            error: '',
          },
        };
      case type[3]:
        return {
          [name]: {
            ...state[name],
            isLoading: true,
            error: '',
          },
        };
      default:
        return state;
    }
  };
export default funcReducer ;

const types = [
  '',
  'OPEN_MODAL',
  'CLOSE_MODAL',
  'DELETE_REQUEST',
];

export const deleteItemReducer = funcReducer(types, initialState, 'delete', 'item');


Проблема в том что, например
data: !action.payload ? state[name].data : action.payload[payload]
, не везде нужна.
Буду благодарен за любую помощь!
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
На моей практике такие штуки только запутывают код. If you ask me, как говорится, я бы это расписал на несколько редьюсеров сам. Проще читать, проще поддерживать.
Я считаю, что код надо писать для людей, а не для машины.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@davidnum95
Все зависит от того, чего вы хотели добиться этим кодом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы