繁体   English   中英

对于每个 Axios 调用?

[英]For Each Axios Call?

因此,该软件的 API 无法在 1 次调用中为我提供所需的所有数据。 还有另一个端点使用来自第一个端点的数据为我提供我实际需要的数据。

所以发生了什么,当设备第一次加载时,它会检查设备在哪个存储中使用。这是第一个 API 调用。 执行该 API 调用后,我认为使用 API 查询商店中的所有设备。

在那之后是我遇到问题的地方。

一旦我保存了所有设备的状态,它只包含部分信息……例如,当我查询商店中的设备时,API 只提供给我一个序列号。 但是,使用序列号我可以查询我需要的所有数据,并且我需要所有设备的数据。

所以我的问题是,React-Native 可以执行 foreach 循环并将其保存到状态吗?

我无法弄清楚状态,我必须创建一个数组..但问题是我必须刷新屏幕才能保存状态,这一直是一个问题。

我管理了这个,虽然它确实有效,但它不会将数组保存到状态。

const array=[]

handleSetStoreDevices = () => {
    var axios = require('axios');
    storeInfo.forEach(async (item) => {
      var config = {
        method: 'get',
        url: URL,
        headers: {
          Accept: 'application/json',
          Authorization:
            'Basic ',
        },
      };

      await axios(config)
        .then(function (response) {
          console.log('next');
          array.push(response.data);
        })
        .catch(function (error) {
          console.log(error);
        });
    });
  };

我想看看是否有办法做到这一点并管理状态?

你可以使用Promise.all() 这是我建议的方法。 您可以在useEffect调用此函数并将返回值保存到状态。

handleSetStoreDevices = async () => {
        var axios = require('axios');
        var config = {
            method: 'get',
            url: URL,
            headers: {
              Accept: 'application/json',
              Authorization:
                'Basic ',
            },
          };
        const response = await Promise.all(storeInfo.map(async (item) => {
          return axios(config)
            .then(function (response) {
              return response.data;
            })
            .catch(function (error) {
              console.log(error);
              return null;
            });
        }));

        return response;
      };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM