I'm new to React Native and struggling with some code:
import 'react-native-gesture-handler'
import React, { useState, useEffect } from 'react';
import { StyleSheet, Text, View, Button, Image, TextInput, ActivityIndicator } from 'react-native'
import firebase from "../utils/firebase"
const SettingsScreen = () => {
     const [isEditing, setIsEditing] = useState(false)
     const [userDataLoaded, setUserDataLoaded] = useState(false)
     const [updatedFirstName, setUpdatedFirstName] = useState("")
     const user = firebase.auth().currentUser
     let userData: firebase.firestore.DocumentSnapshot
     firebase.firestore().doc("users/" + user?.uid).get().then(user => {
          userData = user
          setUserDataLoaded(true)
     }).catch(error => {
          console.log(error.code, error.message)
     })
     function onSaveChanges() {
     }
     return (
          <View>
               {userDataLoaded ? (
                    <>
                         {/* Change Editing Permission */}
                         < Button title={isEditing ? "Save Changes" : "Edit"} onPress={() => {
                              setIsEditing(!isEditing)
                              // save changes
                              if (isEditing) onSaveChanges();
                         }} />
                         {/* First Name */}
                         <Text>User: {userData.data()}</Text>
                         <TextInput
                              editable={isEditing}
                              placeholder="First Name"
                              onChangeText={text => setUpdatedFirstName(text)}
                         // value={updatedFirstName == "" ? userData?.get("firstName") : updatedFirstName}
                         />
                    </>
               ) : (
                         <ActivityIndicator />
                    )}
          </View>
     )
}
export default SettingsScreen
I'm getting an error, because of the use of userData in the return section. It says that the variable is used before its assigned.
My understanding is that React is rendering the section, in which userData is being used in, only if the state userDataLoaded is set to true. And userDataLoaded only is set to true if userData is assigned by the data loaded from the server.
What am I doing wrong? Thanks for your support :)
 
    