【发布时间】:2020-06-22 23:59:33
【问题描述】:
下面是使用 React-Redux 获取电影的代码。我已经使用 fetch() 从 API 获取数据,但我收到错误消息“未捕获的错误:操作必须是普通对象。使用自定义中间件进行异步操作。”
HomeAction.js
import {API_URL, API_KEY} from '../config';
export function getMovies(movies)
{
return function(dispatch){
const url =`${API_URL}movie/popular?api_key=${API_KEY}&language=en-us&page=1`;
fetch(url)
.then(response => response.json())
.then(function(data){
dispatch({type:"GET_MOVIES", payload:data.results})
})
.catch(function(err){
dispatch({type:"GET_MOVIES", payload:err})
})
}
}
HomeReducer.js
export function HomeReducer(state ={
},action)
{
console.log(action);
switch(action.type)
{
case "GET_MOVIES" :
return {...state,...action.payload};
break;
default :
break;
}
return state;
}
app.js
import React from 'react';
import ReactDOM from 'react-dom';
//redux
import {createStore, applyMiddleware} from 'redux';
import {createLogger} from "redux-logger";
//to connect to react and redux
import {Provider} from 'react-redux';
//STEP 3
import reducers from './Reducers/indexReducer';
import App from './App';
const middleware = applyMiddleware(createLogger());
//STEP 1
const store = createStore(reducers,middleware);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>
,
document.getElementById('root')
);
所以我尝试通过浏览来使用 axios 并尝试使用 redux-thunk 但我得到了同样的错误。请帮我解决这个问题
【问题讨论】:
-
您应该阅读Redux 教程,因为操作不应该这样使用。 Redux 只是一个存储 getting 和 setting 数据的商店,你不能在任何地方拨打电话之类的东西。
标签: javascript reactjs redux