项目的错误是错误:操作必须是普通对象。使用自定义中间件进行异步操作。我想知道热来解决这个问题。这是 Store.js 在传递给路由器之前放置配置历史和存储的地方
import {applyMiddleware , createStore, combineReducers, compose} from 'redux'
import {browserHistory} from 'react-router'
import {syncHistoryWithStore, routerReducer , routerMiddleware} from 'react-router-redux'
import {composeWithDevTools} from 'redux-devtools-extension';
import promise from "redux-promise-middleware"
import { createBrowserHistory } from 'history';
import exercise from './reducers/Exersice'
var reducers = {exercises:exercise};
const store = createStore(combineReducers({
...reducers,
routing: routerReducer
}), composeWithDevTools( applyMiddleware( routerMiddleware( createBrowserHistory() ), promise() ) ) )
const history = syncHistoryWithStore(createBrowserHistory(), store)
module.exports = {
store,
history,
reducers:()=>{
var exercises = require('./reducers/Exersice');
var reducers = {exercises:exercises};
return combineReducers({
...reducers,
routing: routerReducer
})
}
}
这是动作文件:
//Actions for get courses
import axios from 'axios'
//Get courses by author
export function getExerciseById(author){
return (context, id) => {
return {
type: 'GET_EXERCISE_ID',
payload: axios.get(window.url_api+'/exercises/'+id,
{headers:{'Authorization':'Bearer '+context.props.token}}),
}
}
}
export function getExercises(){
return (context, author) => {
return {
type: 'GET_EXERCISES',
payload: axios.get(window.url_api+'user'),
}
}
}
这是我的减速机
export default(state = {}, action) => {
switch (action.type){
case 'GET_EXERCISE_ID':
return {
...state,
fetching:false,
fetched: true,
data: action.payload
}
break;
case 'GET_EXERCISES':
return {
...state,
fetching:true,
fetched: false,
data: action.payload
}
break;
default:
return state
}
return state
}
这是我的路由器:
import React, {Component} from 'react';
import App from './Components/App';
import {Provider} from 'react-redux'
import Program from './routes/Programs/Program';
import Exercise from './routes/Exercise/Exercise';
import Generations from './routes/Generations/Generation';
import Routines from './routes/Routines/Routine';
import Promos from './routes/Promos/Promo';
import Logout from './routes/Logout';
import {
BrowserRouter as Router,
Route
} from 'react-router-dom';
module.exports = (store, history) => {
return (
<Provider store={store}>
<Router history={history}>
<div>
<Route path="/" component={App} />
<Route path="/home" component={App}/>
<Route path="/generaciones" component={Generations}/>
<Route path="/rutinas" component={Routines}/>
<Route path="/ejercicios" component={Exercise}/>
<Route path="/promociones" component={Promos}/>
<Route path="/cerrarsesion" component={Logout}/>
</div>
</Router>
</Provider>
)
}