【问题标题】:React navigation wtih redux使用 redux 反应导航
【发布时间】: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


【解决方案1】:

你可以试试这个吗?

onButtonPress = async () => {
  const { email, password } = this.props;
  await this.props.loginUser({ email, password })
  this.props.navigate('Home');
}

【讨论】:

  • 我尝试这样做,但无论身份验证是否成功,它都会自动登录用户,我最终将导航作为道具传递给我的操作,然后从那里导航,这有助于区分成功身份验证
猜你喜欢
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2020-09-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多