在firestore中获取一个用户的数据并在Expo中显示
Get one user's data in firestore and display in Expo
我正在使用 Expo 和 Firebase 创建一个应用程序。我目前正在使用此代码获取用户的个人资料信息:
async function getUserInfo(){
try {
let doc = await firestore
.collection('users')
.doc(auth.currentUser.uid)
.get();
if (!doc.exists){
alert('No user data found!')
} else {
let dataObj = doc.data();
alert(dataObj.FullName);
}
} catch (err){
alert('There is an error.', err.message)
}
}
这样就可以了。显示警报。但是,我正在尝试显示这样的值
<Text>Name: {here_some_variable_for_name}</Text>
这是我尝试过的方法:
- 返回变量然后调用函数
- 使用 ``const [fullName, setFullName] = useState(''),并设置“fullName”。这是代码:
const [fullName, setFullName] = useState('')
async function getUserInfo(){
try {
let doc = await firestore
.collection('users')
.doc(auth.currentUser.uid)
.get();
if (!doc.exists){
alert('No user data found!')
} else {
let dataObj = doc.data();
setFullName(dataObj.FullName);
}
} catch (err){
alert('There is an error.', err.message)
}
}
getUserInfo();
添加“const [fullName, setFullName] = useState('')”这一行后,代码突然不起作用了。在网络浏览器中测试时,页面是空白的。
这些都没有用。数据确实接收正确,但是显示部分不工作
找到解决方案:我忘记导入 useState,我这样做了并且成功了。
我正在使用 Expo 和 Firebase 创建一个应用程序。我目前正在使用此代码获取用户的个人资料信息:
async function getUserInfo(){
try {
let doc = await firestore
.collection('users')
.doc(auth.currentUser.uid)
.get();
if (!doc.exists){
alert('No user data found!')
} else {
let dataObj = doc.data();
alert(dataObj.FullName);
}
} catch (err){
alert('There is an error.', err.message)
}
}
这样就可以了。显示警报。但是,我正在尝试显示这样的值
<Text>Name: {here_some_variable_for_name}</Text>
这是我尝试过的方法:
- 返回变量然后调用函数
- 使用 ``const [fullName, setFullName] = useState(''),并设置“fullName”。这是代码:
const [fullName, setFullName] = useState('')
async function getUserInfo(){
try {
let doc = await firestore
.collection('users')
.doc(auth.currentUser.uid)
.get();
if (!doc.exists){
alert('No user data found!')
} else {
let dataObj = doc.data();
setFullName(dataObj.FullName);
}
} catch (err){
alert('There is an error.', err.message)
}
}
getUserInfo();
添加“const [fullName, setFullName] = useState('')”这一行后,代码突然不起作用了。在网络浏览器中测试时,页面是空白的。
这些都没有用。数据确实接收正确,但是显示部分不工作
找到解决方案:我忘记导入 useState,我这样做了并且成功了。