在登录中按下登录按钮时,我试图导航到主屏幕。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>
)}
...
多亏了withNavigation,我修复了它。https://reactnavigation.org/docs/en/with-navigation.html
withNavigation是一个高阶组件,它将导航道具传递到一个包装组件中。当您无法将导航道具直接传递到组件中,或者在嵌套较深的子级的情况下不想传递导航道具时,它非常有用。
登录。js
import { withNavigation } from 'react-navigation'
const Login = ({ navigation }) => {
...
}
export default withNavigation(Login)
不管怎样,如果可能的话,我很想知道没有这个如何修复它。