我有一个 React 应用程序,我需要使用 Redux 对在线服务(异步)进行 ajax 调用(以便学习)。
这是我的商店:
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import duedates from './reducers/duedates'
export default applyMiddleware(thunk)(createStore)(duedates);
这是动作:
import rest from '../Utils/rest';
export function getDueDatesOptimistic(dueDates){
console.log("FINISH FETCH");
console.log(dueDates);
return {
type: 'getDueDate',
dueDates
}
}
export function waiting() {
console.log("IN WAIT");
return {
type: 'waiting'
}
}
function fetchDueDates() {
console.log("IN FETCH");
return rest({method: 'GET', path: '/api/dueDates'});
}
export function getDueDates(dispatch) {
console.log("IN ACTION");
return fetchDueDates().done(
dueDates => dispatch(getDueDatesOptimistic(dueDates.entity._embedded.dueDates))
)
}
这是减速器:
export default (state = {}, action) => {
switch(action.type) {
case 'getDueDate':
console.log("IN REDUCER")
return state.dueDates = action.dueDates;
default:
return state
}
}
我不明白我做错了什么。该操作正在从组件中完美调用。但后来我得到这个错误:
错误:操作必须是普通对象。使用自定义中间件进行异步操作。
我想我使用了错误的 react-thunk 中间件。我究竟做错了什么?
编辑
现在动作正在调用reducer,但是reducer在改变状态后没有重新运行render方法
case 'getDueDate':
console.log("IN REDUCER")
return state.dueDates = action.dueDates;