提问者:小点点

响应功能组件之间的本机导航?


在登录中按下登录按钮时,我试图导航到主屏幕。js。LoginForm完全可以加载,但当我按下按钮时,我开始收到错误“TypeError:Undefined不是对象(评估“navigation.navigate”). 以前这不是一个问题,但当我将登录名移动到另一个组件时,它发生了变化。我遇到了一个不同的错误,我经历了这个问题,但没有解决它:未定义并不是一个评估这个的对象。道具。导航如果需要完整的代码,请告诉我。谢谢:)

登录表单。js

...
import Login from "./Login";

const LoginForm = props => {
  return <Login />
}
...

登录。js

const Login = ({ navigation }) => {
 return (
  <TouchableOpacity
    style={{ marginTop: 20 }}
    activeOpacity={1}
    onPress={() => navigation.navigate("Main")}
  >
    <View style={styles.loginButtonContainer}>
      <Text style={styles.loginButtonText}>Login</Text>
    </View>
  </TouchableOpacity>
  )}
...

共1个答案

匿名用户

多亏了withNavigation,我修复了它。https://reactnavigation.org/docs/en/with-navigation.html

withNavigation是一个高阶组件,它将导航道具传递到一个包装组件中。当您无法将导航道具直接传递到组件中,或者在嵌套较深的子级的情况下不想传递导航道具时,它非常有用。

登录。js

import { withNavigation } from 'react-navigation'

const Login = ({ navigation }) => {
...
}

export default withNavigation(Login)

不管怎样,如果可能的话,我很想知道没有这个如何修复它。