【发布时间】:2022-01-01 16:37:41
【问题描述】:
我正在使用 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)是合适的并且应该可以工作。你能分享那个代码吗? -
现在添加了该代码。无论出于何种原因,代码“const [fullName, setFullName] = useState('')”似乎导致代码无法正常工作
-
从 Firestore 获取数据是一个副作用,您需要在内部调用
useEffect。useEffect(()=>{getUserInfo()},[]) -
嗯...用useState试过了,还是不行
-
另一个注意事项:我没有在 expo localhost 中出现任何语法错误。我所看到的是整个页面变为空白 - 这使得很难推断出代码不起作用的原因。我要做的就是将每一行逐行注释掉
标签: javascript react-native google-cloud-firestore expo react-native-firebase