作者:mobiledu2502906927 | 来源:互联网 | 2023-09-23 14:15
我有一个动作exportfunctionloginSuccess(response){return(dispatch,getState){dispatch({response,t
我有一个动作
export function loginSuccess(response){
return (dispatch, getState) => {
dispatch({ response, type: types.LOGIN });
router.transitionTo("/profile")
};
}
在成功执行我的操作后,我想将其重定向到/ profile.
这里我得到的路由器没有定义.
解决方法:
你必须将路由器传递给你的redux thunk动作创建者(你的代码不是一个动作,而是我写的动作创建者).例如,它可能看起来像:
export function loginSuccess(router, response){
return (dispatch, getState) => {
dispatch({ response, type: types.LOGIN });
router.transitionTo("/profile")
};
}
您是否可以访问您调用此操作创建者的路由器?那里有空吗?如果是,那么你有这样的东西(我不知道什么是回应):
this.props.dispatch(loginSuccess(response));
你必须把它改成:
this.props.dispatch(loginSuccess(this.context.router, response));
我假设您可以通过上下文访问路由器.
因为你没有展示你如何调用这个动作我只是在猜测.我希望我的指示能帮到你.
还有一件事.新的react-router api在路由器中没有transitionTo方法!我不知道你是否使用新的或旧的api.但如果你得到如下错误:
Calling transitionTo
fails with: ‘location.search.substring is not a function’
然后改变:
router.transitionTo("/profile")
至:
router.push("/profile")