首页 > 解决方案 > 数组没有填充/映射()正确的反应

问题描述

我正在尝试映射一个数组,但我认为它填错了,因为它为undefined我添加了一些东西提供了一些东西,但由于undefined某些原因它们出现了

在此处输入图像描述

如果您查看顶部,则顶部是一个单独的数组,其余的将是undefined如果我尝试使用它们.map()

这张图片来自这里的控制台日志:

           {RuuviTag.map((tag) => (



              <div key={tag.MAC}>
                {console.log(tag.MAC),
                console.log(tag)


                }

                <Marker position={[tag.Latitude.replace(/,/g, '.'), tag.Longitude.replace(/,/g, '.')]} icon={new Icon({
                   iconUrl: tag.colorIcon,
                    iconSize: [25, 41],
                     iconAnchor: [12, 41] })} >
                  <Popup>
                    <h1>{tag.MAC}
                       </h1>
                       <h1>
                       </h1>
                  </Popup>
                </Marker>





              </div>
            ))}\

这是我填充数组的代码:

 async function getData() {
    setLoading(true);

    ref.onSnapshot((querySnapshot) => {
      let items = [];

      querySnapshot.forEach((doc) => {
       
        let item = doc.data()
        console.log(doc.data().RawData)
        PostRawData(doc.data().RawData).then(function (result) {
          console.log(result)
          item.decryptedData = result.data;
        });

        checkBoundaries(doc.data().RawData).then(function (result) {
          console.log(result)
          item.colorIcon = result;
        });
        console.log(item)

        items.push(item);
        console.log(items)

      });

但是当我尝试从解密数​​据中映射 colorIcon 或其他内容时,它会出现undefined

有谁知道如何解决这一问题?我在任何地方都找不到这个问题

标签: javascriptarraysreactjsleaflet

解决方案


您应该在完成异步功能后推送项目。

像这样

let item = doc.data()
Promise.all([
  PostRawData(doc.data().RawData),
  checkBoundaries(doc.data().RawData),
]).then(function (result) {
  item.decryptedData = result[0].data;
  item.colorIcon = result[1]
  items.push(item)
})

推荐阅读