这些是sessionActions中的操作:
// Absolute imports
import axios from 'axios';
// Relative imports
import * as types from './actionTypes';
import auth from '../auth/authenticator';
import { ROOT_URL } from './constants';
export function loginUser(formValues) {
return function (dispatch) {
return axios.post(`${ROOT_URL}/login`, formValues)
.then((response) => {
dispatch(loginSuccess(response.data));
})
.error((response) => {
dispatch(loginFailure(response.data));
});
}
}
export function loginSuccess(user) {
return {
type: types.LOG_IN_SUCCESS,
payload: user
};
}
export function loginFailure(error) {
return {
type: types.LOG_IN_FAILURE,
payload: error
};
}
当我触发操作时,我收到以下错误:
Uncaught TypeError: _axios2.default.post(...).then(...).error is not a function
我似乎无法弄清楚出了什么问题...下面的其他信息:
"axios": "^0.15.3",
我整天都被困在这里,似乎无法找到任何能引导我找到解决方案的信息......
也发布我的sessionReducer:
// Absolute imports
import { browserHistory } from 'react-router';
// Relative imports
import * as types from '../actions/actionTypes';
const INITIAL_STATE = { user: null, status: null, error: null, loading: false };
export default function sessionReducer(state = INITIAL_STATE, action) {
let error;
switch (action.type) {
case types.LOG_IN_SUCCESS:
browserHistory.push('/dashboard');
return { ...state, user: action.payload.user, status: 'authenticated', error: null, loading: false };
case types.LOG_IN_FAILURE:
error = action.payload.data || { message: action.payload.message };
return { ...state, user: null, status: 'sign-in', error: error, loading: false };
case types.LOG_OUT:
return { ...state, user: null, status: 'logout', error: null, loading: false };
default:
return state;
}
}
我还应该注意,我可以在此过程中的多个点处输入调试器,并查看返回的正确有效负载。只是无法弄清楚错误发生的原因并停止整个过程。
答案 0 :(得分:2)
此TypeError表示"错误"不是一个功能 - 这正是问题所在。
您可以使用catch
函数进行链接以捕获错误,但没有error
函数。
此处的详细信息可以在{docon} Handling Errors
的API文档中看到答案 1 :(得分:0)
在您的动作创建者中,您使用常量types.SIGNIN_USER_SUCCESS,
和type: types.SIGNIN_USER_FAILURE,
,在减速器中,您使用常量types.LOG_IN_SUCCESS:
和case types.LOG_IN_FAILURE:
。这些不匹配因此会引发错误。我假设你不是故意这样做的。