Задать вопрос
@uroot

Ошибка «Actions must be plain objects. Use custom middleware for async actions». Как решить?

Есть умный компонент:
function MethodWrapper(props) {
  const API_METHOD = [
      ...
  ]

  function submitHandler(event) {
    event.preventDefault()

    if (!props.method && !props.url) {
      showAlert("Название поста не может быть пустым")
      console.log(props)
    }
  }

  return (
    <form onSubmit={submitHandler}>
      <Input />
      <div className={style.methodWrapper}>
        <Methods isActive={props.method} methodList={API_METHOD}/>
      </div>
    </form>
  )
}

const mapDispatchToProps = {
  showAlert, getURL, getMethod
}

const mapStateToProps = state => ({
  alert : state.alert,
  url : state.url,
  method : state.method
})

export default connect(mapStateToProps, mapDispatchToProps)(MethodWrapper)


При клике на Сабмит, я вижу ошибку Error: Actions must be plain objects. Use custom middleware for async actions.. Жалуется на props.showAlert("Название поста не может быть пустым"). showAlert - это экшин, который принимает текст и пишет в стор. Как избавиться от ошибки?

Экшин showAlert:
export function showAlert(text) {
  return dispatch => {
    dispatch({
      type: SHOW_ALERT,
      payload: text
    })
  }
}


rootReducer:
import {HIDE_ALERT, SHOW_ALERT, REQUES_METHOD, GET_URL} from "./type";

export const initialState = {
  alert : null,
  url : null,
  method : null
}

export const rootReducer = ( state = initialState, action) => {
  switch (action.type) {
    ...
    case SHOW_ALERT:
      return {...state, alert : action.payload}
    ...
    default : return state
  }
}
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
E1ON
@E1ON
Vocaloid lover
Экшен должен возвращать обьект
export const showAlert = text => ({
   type: SHOW_ALERT,
   payload: text
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Devilz_1
@Devilz_1
Frontend-Developer
Ознакомьтесь с тем, как нужно правильно коннектиться со стором тутачки

Обратите внимание на mapDispatchToProps.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽