Многократное действие и много случая переключения в редукторе? действие на каждое событие? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть папка опций в хранилище, чтобы сохранить связанные с опциями, которые мне нужно получить при запуске, и, возможно, получить данные из хранилища опций в других случаях.

несколько вопросов

1- У меня есть действия и отправки для get_all, get_all_error. get_all_sucess? мне также нужны эти действия для каждого запроса?

2 - редуктор теперь с 3 корпусами переключателей, но легко добавить множество корпусов переключателей, как я могу разделить его на несколько редукторов и действий?

3- Комбинированный редуктор включает 7-8 редукторов, это нормально или я должен разделить редуктор и как я могу это сделать?

Конечно, мне нужен файл типов для всех этих действий с интерфейсом для каждого действия, поэтому файл типов также большой

моя страница действий:

import {
  OPTIONS_GETALL_SUCCESS,
  OPTIONS_GETALL_REQUEST,
  OPTIONS_GETALL_FAILURE
} from './types';
import { AppState } from '..';

type ThunkResult<R> = ThunkAction<void, AppState, DIServices, AnyAction>;

export const getAllOptions = (): ThunkResult<void> => async (
  dispatch: any,
  state: any,
  services: DIServices
) => {
  try {
    dispatch({ type: OPTIONS_GETALL_REQUEST });
    const response = await services.setting.getSettings();
    return dispatch({ type: OPTIONS_GETALL_SUCCESS, payload: response });
  } catch (e) {
    return dispatch({ type: OPTIONS_GETALL_FAILURE, error: e });
  }
};

мой редуктор

export const optionsReducer = (
  state = initialState,
  action: OptionsActionTypes
): OptionsState => {
  switch (action.type) {
    case OPTIONS_GETALL_SUCCESS:
      return {
        ...state,
        data: action.payload,
        isLoading: false
      };
    case OPTIONS_GETALL_REQUEST:
      return {
        ...state,
        isLoading: true
      };
    case OPTIONS_GETALL_FAILURE:
      return {
        ...state,
        isLoading: true
      };
    default:
      return state;
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...