【发布时间】:2018-07-31 00:41:53
【问题描述】:
我正在尝试在我的 RN 应用程序中使用带有 redux 的反应导航。我有一个登录按钮,按钮按下功能如下:
onButtonPress() {
const { email, password } = this.props;
this.props.loginUser({ email, password })
.then(() => {
this.props.navigate('Home');
});
}
loginUser 是由 redux 调度的一个动作,但是这个按钮按下功能在我的 loginform 组件中,我在主堆栈导航器中用作我的屏幕之一,并且我已经对其进行了测试以确保它正常工作,但是,每当我添加导航功能时,我都会收到此错误: undefined 不是对象(评估 'this.props.loginUser({ email: email, password: password }).then')
但是,如果我在 then 语句之外有导航语句,它就可以工作。我尝试查看有关 stackoverflow 和 github 的其他问题,但没有找到有效的解决方案,有什么帮助吗?
这是我在控制台日志 (this.props) 得到的结果:
Object { "email": "n*********@gmail.com", "emailChanged": [Function anonymous], "error": "", "loading": false, "loginUser": [Function anonymous], "navigation": Object { "actions": Object { "dismiss": [Function dismiss], "goBack": [Function goBack], "navigate": [Function navigate], "pop": [Function pop], "popToTop": [Function popToTop], "push": [Function push], "replace": [Function replace], "reset": [Function reset], "setParams": [Function setParams], }, "addListener": [Function addListener], "dangerouslyGetParent": [Function anonymous], "dismiss": [Function anonymous], "dispatch": [Function anonymous], "getChildNavigation": [Function getChildNavigation], "getParam": [Function anonymous], "getScreenProps": [Function anonymous], "goBack": [Function anonymous], "isFocused": [Function isFocused], "navigate": [Function anonymous], "pop": [Function anonymous], "popToTop": [Function anonymous], "push": [Function anonymous], "replace": [Function anonymous], "reset": [Function anonymous], "router": undefined, "setParams": [Function anonymous], "state": Object { "key": "id-1532963235056-0", "routeName": "Login", }, }, "password": "******", "passwordChanged": [Function anonymous], "screenProps": undefined, "signUpUser": [Function anonymous], }
【问题讨论】:
-
我认为您的导航只是嵌套在基于您的 console.log 的道具中。试试:this.props.navigation.actions.navigate('Home');
-
其实你可以发布更多你的组件代码。这也可能是您导出组件的方式有误。
-
我试过这样做,但它不起作用,我最终将导航作为道具传递给我的操作,然后从那里导航(也有助于区分登录用户失败和登录用户成功)
标签: javascript reactjs react-native react-navigation