Получение Actions must be plain objects. Use custom middleware for async action
ошибки:
Редуктор индекса:
import { combineReducers } from 'redux';
import ProfileReducer from './profile_reducer'
const rootReducer = combineReducers({
user: ProfileReducer
});
export default rootReducer;
Маршруты:
const createStoreWithMiddleware = applyMiddleware(promise)(createStore);
const Routers = () => (
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<Switch>
<Route path='/' component={Home} exact={true}/>
<Route path='/login' component={Login} exact={true}/>
<Route path='/register' component={Login} exact={true}/>
<PrivateRoute path='/profile' component={Profile} exact={true}/>
</Switch>
</BrowserRouter>
</Provider>
);
экспорт маршрутизаторов по умолчанию;
Я пытаюсь запустить два запроса вместе: один запрос на получение auth_token из бэкэнда и по ответу на первый запрос я запускаю другой запрос для получения информации профиля пользователя:
Действия в профиле:
import axios from 'axios';
import { getAuthToken } from '../actions/auth';
const ROOT_URL = 'http://localhost:3000/api/v1';
export const FETCH_PROFILE = 'fetch_profile';
export function getProfile(values, callback) {
const url = `${ROOT_URL}/profile`;
getAuthToken( (res) => {
const auth_token = res.data.auth_token
const request = axios({
method: 'GET',
url: url,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `Token token=${auth_token}`
},
});
// request.then((response) => {
// // callback(response);
// })
// request.catch((error) => {
// alert(error);
// })
return {
type: FETCH_PROFILE,
payload: request
};
});
}
как мне это сделать? Каков наилучший способ сделать это и метод?