【问题标题】:push object to array react native将对象推送到数组反应本机
【发布时间】:2020-12-18 18:48:21
【问题描述】:

我需要获取在 firestore 中具有 serviceClientID 字段的特定用户。

那些这样做的,我将它插入到数组中,并将其放入我的状态聊天 (setChat)。

但问题是只有一个用户进入我的状态,我有两个用户使用这个字段。

为什么只有1个进入而不是2个?

代码如下:

firebase.auth().onAuthStateChanged(async ({ uid }) => {
          const servicesCollection = await firestore()
            .collection('Providers')
            .doc(uid)
            .collection('ServiceHistory')
            .get();
          servicesCollection.docs.forEach(async item => {
            if (item.exists && item.data().serviceClientID) {
              const clientsCollection = await firestore()
                .collection('Clients')
                .doc(item.data().serviceClientID)
                .get();

              // if (item.data().serviceClientID === clientsCollection.id) {
              const values = {
                id: clientsCollection.id,
                name: clientsCollection.data().name.last,
                uid,
              };
              const arr = [];

              arr.push(values);
              // }
              console.log('arrayay', arr);

              setChats(arr);
            }
          });
        });

【问题讨论】:

    标签: arrays reactjs react-native use-state array-push


    【解决方案1】:

    因为每次循环都会清空一个数组。 您必须将 {arr} 从函数中取出。那么你需要往里面推数据。

    const firebaseFunc =  () => {
          let arr = [];
    
          firebase.auth().onAuthStateChanged(async ({ uid }) => {
            const servicesCollection = await firestore()
                .collection('Providers')
                .doc(uid)
                .collection('ServiceHistory')
                .get();
            servicesCollection.docs.forEach(async item => {
              if (item.exists && item.data().serviceClientID) {
                const clientsCollection = await firestore()
                    .collection('Clients')
                    .doc(item.data().serviceClientID)
                    .get();
                arr.push({
                  id: clientsCollection.id,
                  name: clientsCollection.data().name.last,
                  uid,
                });
              });
          });
    
          setChats(arr);
          console.log('arrayay', arr);
        }

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多