【发布时间】:2017-06-23 02:55:39
【问题描述】:
我已经使用 redux thunk 来做异步。它已经可以使用这种格式了:
export function registerUser({email,password}){
return function(dispatch){
axios.post(`${ROOT_URL}/api/auth/signup`,{email,password})
.then(response =>{
dispatch({type:AUTH_USER});
localStorage.setItem('laravel_user_token',response.data.token);
browserHistory.push('/register');
})
.catch(response => dispatch(authError(response.data.error)));
}
}
现在我想尝试在注销时执行一些异步操作,如下所示:
export function logoutUser() {
console.log("logout");
localStorage.removeItem('laravel_user_token');
return { type: LOGOUT_USER }
}
这是工作,现在我打算在使用此代码执行注销后重定向页面:
export function logoutUser() {
return dispatch => {
console.log("logout");
localStorage.removeItem('laravel_user_token');
return dispatch({ type: LOGOUT_USER })
.then(() =>
browserHistory.push("/")
);
}
}
我的问题是没有回复,甚至我的 console.log("logout") 也不起作用。
【问题讨论】:
-
return dispatch({ type: LOGOUT_USER }) .then(() => browserHistory.push("/") );这不起作用,因为 dispatch 在这里没有返回承诺,所以.then没有意义
标签: reactjs asynchronous redux react-router redux-thunk