@Columnistdc
Junior front-end

Как переписать action в компоненте?

Добрый день!
Есть коннект вида
@connect(null, dispatch => ({
  handleFilters: (type, text) => dispatch(handleFilters(type, text))
}))

Как перенести диспатч из него во внутрь экшенов?
export const handleFilters = (type, val) => {
  switch (type) {
    case "input":
      return {
        type: FILTER_BY_INPUT,
        payload: val
      };
    case "time":
      return {
        type: FILTER_BY_TIME,
        payload: val
      };
    case "hall":
      return {
        type: FILTER_BY_HALL,
        payload: val
      };
    case "status":
      return {
        type: FILTER_BY_STATUS,
        payload: val
      };
    case "dateFrom":
      return {
        type: FILTER_BY_DATE_FROM,
        payload: val
      };
    case "dateTo":
      return {
        type: FILTER_BY_DATE_TO,
        payload: val
      };
  }
};

Всю голову сломал - не понял.
Важное условие: bindActioncreators нельзя применять.
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
maxfarseer
@maxfarseer
реакт.рф, обучаю реакту и компании
Понять бы еще зачем этот перенос?

Тем не менее, если вы хотите использовать dispatch внутри ваших экшенов, можете взять middleware redux-thunk, тогда сможете записать:

export const handleFilters = (type, val) => {
  return (dispatch, getState) => {
    switch (type) {
    case "input":
      dispatch({
        type: FILTER_BY_INPUT,
        payload: val
      });
    case "time":
      ...
    }
  }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы