我想将用户重定向到某个已登录的地方,我可以使用Promise来做到这一点,但是我的redux thunk异步不会在响应中返回任何内容。
export function loginUser(email,password){
return dispatch=>{
return axios.post('auth/login', {email,password})
.then(res=>{
if(res.status===200 && res.data.status===1){
//things are working here
dispatch({
type: AUTH_SUCCESS,
payload: res.data.data
})
}
})
.catch(res => {
dispatch(errorMsg(res.data.msg))
})
}
}
在我的组件中
componentDidMount() {
this.props.loginUser('username', 'pass')
.then(resp => {
console.log(resp) //this is undefined?!
})
}
我试过了
return dispatch({
type: AUTH_SUCCESS,
payload: res.data.data
})
它也不起作用。
除了使用then,我还能做什么来将用户重定向到登录页面?
最佳答案
您还必须从Promise的.then()
和.catch()
回调中返回:
export function loginUser(email,password){
return dispatch=>{
return axios.post('auth/login', {email,password})
.then(res=>{
if(res.status===200 && res.data.status===1){
//things are working here
dispatch({
type: AUTH_SUCCESS,
payload: res.data.data
})
// return when success
return {
type: AUTH_SUCCESS,
payload: res.data.data
}
}
// return if failed, you can also return Promise.reject to invoke the .catch
return "something"
})
.catch(res => {
dispatch(errorMsg(res.data.msg))
// return error message
return res.data.msg;
})
}
}