使用axios从多个页面获取数据

时间:2020-05-24 12:43:19

标签: reactjs api axios

我正在尝试使用Axios提取带有特定标签的15篇文章。但是,在一页上只有10个带有不同标记的结果,因此,我必须按照以下示例映射多个页面中的数据:

How to fetch data over multiple pages?

Promise All with Axios

到目前为止,这是我的代码……显然,它不起作用。我相信错误是最后的getAllData(urls),因为在chrome开发工具中我遇到了一个错误: enter image description here

flutter install

返回码

npm install

非常感谢您的帮助,我已经坚持了一段时间。谢谢

2 个答案:

答案 0 :(得分:1)

Promise.all需要一个Promise数组,而您的fetchData函数需要返回一个Promise。

const fetchData = (url) => {
          return axios //<-------- make sure to add return here
            .get(url)
            .then((res) => {
              return {
                data: res.data,
              };
            })
            .catch((err) => {
              console.log(err);
            });
        };

答案 1 :(得分:1)

您需要在fetchData中返回一个promise,然后在调用getAllData()以获取文章时遍历结果

 const fetchData = url => {
      return axios
        .get(url)
        .then(res => {
          return {
            data: res.data
          };
        })
        .catch(err => {
          console.log(err);
        });
    };

    //this is not working console.log(res) undefined ??

    getAllData(urls)
      .then(res => {
        console.log(res);

        let articles = [];

        for (let rs in res) {
          articles = [...articles, ...res[rs].data.response.results];
        }
        // console.log("++ articles: ", articles);
        this.setState({
          articles: articles
        });
      })
      .catch(e => {
        console.log(e);
      });