Descubrí cómo navegar desde signupScreen a homeScreen usando React-navigation junto con firebase-authentication pero agregué una pantalla adicional. Esta es la pantalla de configuración del perfil. Mi problema es que no puedo navegar desde la pantalla de configuración a la pantalla de inicio después de obtener los datos del usuario. Se supone que el botón Finalizar 'agregar datos' y luego navegar a la pantalla de inicio, pero no puedo resolverlo.
Por favor pregunte si necesita más información. Aquí hay una parte de mi código. ¿Qué debo agregar?
//... //This adds the users data onto firebase const addData = () => { try { const docRef = addDoc(collection(db, "users"), { nickname, bio, selectedImage, dbEmail, }); console.log("Document written with ID:", docRef.id); } catch (e) { console.error("Error adding document: ", e); } }; //Overall UI return ( //Once 'Finish' is pressed, it saves the data onto FireStore and should navigate to homeScreen <View style={styles.all}> <Text style={styles.title}>Profile Setup</Text> <View style={styles.selectionView}> <TouchableOpacity style={styles.completebtn} onPress={onSignOut}> <Text style={styles.backtxt}>Back</Text> </TouchableOpacity> <TouchableOpacity style={styles.completebtn} onPress={addData}> <Text style={styles.completetxt}>Finish</Text> </TouchableOpacity> </View> //...Depende de si ProfileSetupScreen es o no una Screen definida en el navegador. Si es así, el marco de navegación pasará el accesorio de navigation a ProfileSetupScreen y podrá usarlo de la siguiente manera a través de los screen props .
const ProfileSetupScreen = ({navigation}) => { const addData = () => { try { const docRef = addDoc(collection(db, "users"), { nickname, bio, selectedImage, dbEmail, }); console.log("Document written with ID:", docRef.id); navigation.navigate(”HomeScreen”) } catch (e) { console.error("Error adding document: ", e); } }; return (…) } Tenga en cuenta que navigation.navigate(”HomeScreen“) toma el nombre de la pantalla a la que queremos navegar y que está definida en el navegador, por lo tanto, si su pantalla de inicio está definida allí con un nombre diferente, entonces debe usar ese nombre.
Si su ProfileSetupScreen no es una pantalla en su navegador, entonces el accesorio de navegación no pasará a la pantalla.
En este caso tienes dos opciones. Pase el apoyo de navegación al componente desde una pantalla principal que es una pantalla definida en el navegador o use el useNavigation de la siguiente manera.
const ProfileSetupScreen = (props) => { const navigation = useNavigation() … }