ошибка redux-реагировать: действия должны быть простыми объектами - PullRequest
0 голосов
/ 24 мая 2018

Я изучаю избыточность, и после установки всех настроек я получаю это сообщение:

    Error: Actions must be plain objects. Use custom middleware for async actions.

Я прочитал 10 различных проблем с этой ошибкой, но у меня не работает ни одно решение.вот мой проект на github, в случае, если проблема не в следующем коде: https://github.com/CodeNinja1395/Test-task-for-inCode/tree/redux

store:

import {createStore, applyMiddleware, compose} from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';

const initialState = {};

const middleware = [thunk];


const store = createStore(
  rootReducer,
  initialState,
  applyMiddleware(thunk)
);

export default store;

actions:

import {FETCH_DATA} from './types';

export const fetchData = () => dispatch => {
  fetch('https://raw.githubusercontent.com/CodeNinja1395/Test-task-for-inCode/master/clients.json')
    .then(posts =>
      dispatch({
        type: FETCH_DATA,
        payload: posts
      })
    );
};

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы используете старую версию redux - v1, в то время как новая версия v4.При обновлении до v4 все работает.

npm install redux@^4.0.0
0 голосов
/ 24 мая 2018

Вы не отвечаете на вызов fetch ().Вы должны убедиться, что вы возвращаете свой вызов извлечения внутри создателя действия.

export function fetchData() { 
    return function(dispatch) {
        return fetch( ... ).then( ... ).catch( ... )
    }
}


export const fetchData = (params) => dispatch => {
    dispatch(beginAjaxCall());
    return fetch(...).then(response => {
        dispatch(someFunction(response));
    }).catch(error => {
      throw(error);
    });
}


export const loadIncidents = (params) => dispatch => {
    dispatch(beginAjaxCall());
    return IncidentsApi.getIncidents(params).then(incidents => {
       dispatch(loadIncidentsSuccess(incidents));
    }).catch(error => {
        throw(error);
    });
}

Верх - ES5, средний ES6, а третий - версия ES6 функции, которую я использовал в проекте.

Надеюсь, это поможет.

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