【问题标题】:Get one user's data in firestore and display in Expo在 Firestore 中获取一个用户的数据并在 Expo 中显示
【发布时间】: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 获取数据是一个副作用,您需要在内部调用 useEffectuseEffect(()=&gt;{getUserInfo()},[])
  • 嗯...用useState试过了,还是不行
  • 另一个注意事项:我没有在 expo localhost 中出现任何语法错误。我所看到的是整个页面变为空白 - 这使得很难推断出代码不起作用的原因。我要做的就是将每一行逐行注释掉

标签: javascript react-native google-cloud-firestore expo react-native-firebase


【解决方案1】:

找到了解决方案:我忘记导入 useState,我做到了,它成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多