skip to Main Content

I’m looking for a way in initialize a useState object with the value that is fetched from firestore

getDoc(docRef).then((doc) => {
    const initEmail = doc.data().email
    console.log(initEmail)
    return initEmail
})

const [email, setEmail] = useState(initEmail)

how would i go about doing this?

2

Answers


  1. You should call the setter function for the state inside the asynchronous callback:

    getDoc(docRef).then((doc) => {
        const initEmail = doc.data().email
        console.log(initEmail)
        setEmail(initEmail);
    })
    
    const [email, setEmail] = useState(initEmail, "initial value for email")
    
    Login or Signup to reply.
  2. In case you want to do it as page loads, you should use useEffect,

    useEffect(() => {
            getDoc(docRef).then((doc) => {
                    const initEmail = doc.data().email
                    console.log(initEmail)
                    setEmail(initEmail);
            })
    }, [])
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search