Javascript 获取错误“;undefined不是对象(正在评估';导航';)”;firebase身份验证后-反应本机

Javascript 获取错误“;undefined不是对象(正在评估';导航';)”;firebase身份验证后-反应本机,javascript,firebase,react-native,Javascript,Firebase,React Native,您好,我在提交表单后发现未定义的错误不是对象(评估“navigation.navigate”)。我搜索了很多google/stackoverflow的答案,但没有一个对我有帮助 我不确定这是由firebase还是实际的道具导航引起的。对此有什么见解吗 请参阅下面的代码: //父组件 从“React”导入React; 从“react native”导入{样式表、文本、视图、图像}; 从“../components/LoginForm”导入LoginForm; 常量登录=()=>{ 返回( );

您好,我在提交表单后发现未定义的错误不是对象(评估“navigation.navigate”)。我搜索了很多google/stackoverflow的答案,但没有一个对我有帮助

我不确定这是由firebase还是实际的道具导航引起的。对此有什么见解吗

请参阅下面的代码:

//父组件
从“React”导入React;
从“react native”导入{样式表、文本、视图、图像};
从“../components/LoginForm”导入LoginForm;
常量登录=()=>{
返回(
);
}
const styles=StyleSheet.create({
标志:{
宽度:150,
身高:150,
玛金托普:55
},
主包装器:{
显示:“flex”,
对齐项目:“中心”
}
});
导出默认登录;
//登录表单组件
从“React”导入React,{useState};
从“react native”导入{样式表、文本、视图、文本输入、TouchableOpacity、警报};
从“firebase/app”导入firebase;
导入“firebase/auth”;
从“../config”导入{firebaseConfig};
如果(!firebase.apps.length){
//初始化Firebase
firebase.initializeApp(firebaseConfig);
}
const auth=firebase.auth();
const LoginForm=({navigation})=>{
const[email,setEmail]=useState(“”);
const[password,setPassword]=useState(“”);
const signIn=async()=>{
试一试{
let response=使用email和password(电子邮件,密码)等待身份验证登录;
if(response.user){
Alert.Alert('登录'+response.user.email);
导航。导航('Driver');
}
}捕获(e){
警报。警报(e.message);
}
};
返回(
setEmail(userEmail)}
自动资本化=“无”
keyboardType='email-address'
自动更正={false}
/>
设置密码(用户密码)}
/>
signIn()}>
登录
);
}
const styles=StyleSheet.create({
formView:{
玛金托普:45,
显示:“flex”,
对齐项目:“中心”,
},
输入:{
玛金托普:20,
宽度:300,
身高:40,
水平方向:10,
边界半径:5,
背景颜色:“白色”,
},
提交TN:{
背景色:“FFE17D”,
颜色:“E6646E”,
fontWeight:“粗体”,
宽度:150,
身高:40,
玛金托普:20,
边框颜色:“E6646E”,
边界半径:5,
显示:“flex”,
辩护内容:“中心”,
边框宽度:1,
},
appButtonText:{
尺码:18,
颜色:“E6646E”,
fontWeight:“粗体”,
对准自己:“居中”,
textTransform:“大写”
}

});只有堆栈屏幕可以访问道具导航。您可以尝试将导航发送到LoginForm,但这仅在登录是堆栈屏幕时有效

const Login = ({navigation}) => {
    return (
        <View style={styles.mainWrapper}>
            <Image style={styles.logo} title="Logo" source={require('../assets/box.png')}/>
            <LoginForm navigation={navigation}/>
        </View>
    );
}
const Login=({navigation})=>{
返回(
);
}

或者您可以查看useNavigation钩子

请共享父组件,这样我们就不会猜测什么道具。导航是堆栈的登录组件部分?这里没有与导航相关的代码,您没有将导航道具传递给LoginForm,并且Login组件不是堆栈的一部分。如果它不是堆栈的一部分,您应该使用ref检查api