在功能组件之间反应本机导航?

时间:2020-01-14 13:41:12

标签: react-native react-native-navigation

在Login.js中按下“登录”按钮时,我试图导航到主屏幕。 LoginForm加载完美,但是当我按下按钮时,我开始收到错误消息“ TypeError:未定义不是对象(正在评估'navigation.navigate')。在这之前没有问题,但是当我将Login移到另一个组件时,它就改变了。遇到了另一个错误,我经历了这个错误,但并没有解决:Getting undefined is not an object evaluating _this.props.navigation 让我知道您是否需要完整的代码。谢谢:)

LoginForm.js

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

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

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 个答案:

答案 0 :(得分:0)

我感谢withNavigation修复了它。 https://reactnavigation.org/docs/en/with-navigation.html

withNavigation 是通过导航的高阶组件 支撑成包裹的组件。当您无法通过时非常有用 导航道具直接进入组件,或者不想通过它 如果是深度嵌套的孩子。

Login.js

import { withNavigation } from 'react-navigation'

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

export default withNavigation(Login)

无论如何,如果可能的话,我很想知道如何解决这个问题。