Estoy tratando de hacer una página de perfil de usuario y después de obtener los datos de Firestore, no puedo configurar los datos en el userProfile de perfil de usuario.
const {userProfile, setUserProfile} = useState(null); const getUserProfile = async () => { await firestore().collection("Users") .doc(user.uid) .get() .then(documentSnapshot => { if (documentSnapshot.exists) { console.log('User data from Firestore: ', documentSnapshot.data()); setUserProfile(documentSnapshot.data()); } }); } useEffect (() => { if (userProfile == null) { getUserProfile(); console.log("User Data in userProfile state: ", userProfile); } }, [userProfile])Recibí este error:
El registro de la consola muestra que el estado del userProfile de usuario no está definido; sin embargo, puedo recuperar los datos de Firestore sin ningún problema, como se muestra en el registro de la consola.
const {userProfile, setUserProfile} = useState(null); <----- error is here const getUserProfile = async () => { await firestore().collection("Users") .doc(user.uid) .get() .then(documentSnapshot => { if (documentSnapshot.exists) { console.log('User data from Firestore: ', documentSnapshot.data()); setUserProfile(documentSnapshot.data()); } }); } useEffect (() => { if (userProfile == null) { getUserProfile(); console.log("User Data in userProfile state: ", userProfile); } }, [userProfile]) En lugar de const {userProfile, setUserProfile} = useState(null);
reemplácelo con const [userProfile, setUserProfile] = useState(null);
Porque estás usando curly brackets en {userProfile,setUserProfile}
necesita reemplazarlo con square brackets [userProfile,setUserProfile]