Soy nuevo en reaccionar, base de fuego y desbordamiento de pila, así que tengan paciencia conmigo. Estoy tratando de crear un formulario de registro de usuario con firebase que incluya una entrada de 'nombre'. Funciona para actualizar el nombre para mostrar, pero no lo suficientemente rápido como para mostrar el nombre cuando el usuario inicia sesión por primera vez. Necesito guardar el archivo homescreen.js y luego se completa el nombre para mostrar.
código de registerscreen.js
const [name, setName] = useState('') const handleRegister = async () => { if (confirmPass !== password){ alert('Passwords Do Not Match') return false} else{ } try{ const user = await createUserWithEmailAndPassword(auth, email, password) updateProfile(auth.currentUser, {displayName: name}) console.log('logged in with', user.email) } catch (error) { alert(error.message); }y aquí está el texto en homescreen.js para mostrar el nombre de los usuarios:
<Text style={styles.text}>Logged in as {auth.currentUser?.displayName}</Text>Creo que tienes dos buenas opciones.
// registerscreen.js await AsyncStorage.setItem('name', name); // homescreen.js body const name = await AsyncStorage.getItem('name'); // homescreen.js return <Text style={styles.text}>Logged in as {auth.currentUser?.displayName || name}</Text>Los documentos para AsyncStorage están aquí.
// homescreen.js body // get auth object, however you are doing this already const auth = await getAuth(); // homescreen.js return return ( auth?.currentUser ? // your current component here : <LoadingScreen /> );LoadingScreen podría ser algo como
<View style={[StyleSheet.absoluteFill, { justifyContent: 'center', alignItems: 'center'> <LoadingIndicator /> </View>Al igual que createUserWithEmailAndPassword , la llamada a `updateProfile es una llamada asíncrona, por lo que querrá esperar hasta que termine:
await updateProfile(auth.currentUser, {displayName: name})