Как использовать High-Order-Reducer, react/redux?

Добрый день! Пробую переписать редюсер через High-Order-Reducer, пока не совсем понял как это оптимизировать, чтобы не сделать хуже.
Например есть такой редюсер (который может быть в раз больше)
const createAsyncReducer (state, action) => {
  switch (action.type) {
    case "USER_REQUEST":
      return {
        ...state,
        isFetching: true
      }
    case "USER_SUCCESS":
      return {
        ...state,
        isFetching: false,
        data: action.payload,
        error: void 0,
      }
    case  "USER_FAILURE":
      return {
        ...state,
        isFetching: false,
        error: action.payload
      }
      case  "USER_SOME_ACTION":
      return {
        ...state,
        isFetching: false,
        error: action.payload.some
      }
    default: return state;
  }
}


и нашел такую запись через High-Order. Вопрос как его можно еще улучшить?

const createAsyncReducer = (constants) => (state, action) => {
  switch (action.type) {
    case constants[0]:
      return {
        ...state,
        isFetching: true
      }
    case constants[1]:
      return {
        ...state,
        isFetching: false,
        data: action.payload,
        error: void 0,
      }
    case constants[2]:
      return {
        ...state,
        isFetching: false,
        error: action.payload
      }
    default: return state;
  }
}
const todosReducer = createAsyncReducer([
  "TODOS_REQUEST",
  "TODOS_SUCCESS",
  "TODOS_FAILURE"
]);

const withAddTodo = reducer => (state, action) => {
  const nextState = reducer(state, action);
  switch (action.type) {
    case "ADD_TODO":
      return {
        ...nextState,
        data: [...nextState.data, action.payload]
      };
    default:
      return nextState;
  }
};

const customReducer = withAddTodo(todosReducer);

Код от этого только вырос...
Расскажите пожалуйста у кого какой опыт с этим и лучшие практики по оптимизации этого.
Спасибо!
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 1
Самая лучшая оптимизация работы с redux - использовать мою библиотеку redux-light :). И никаких больше редусеров.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы