在React Js中管理多个HTTP请求操作

时间:2019-12-20 07:16:49

标签: reactjs api get axios

现在我正在ReactJS上做一个更大的项目。我现在只有一页,我需要从该页面的多个URL(API)获取数据。也就是说,我需要获得40多个这样的结果列表:城市,县,类别,性别等等。所有这些都有单独的URL。就像这样:

https://API_URL/users
https://API_URL/country-list
https://API_URL/city
https://API_URL/gender
and etc...

我目前正在使用以下方法获得一个。

componentDidMount() {
     this.setState({
         isLoading: true
     });
     axios.get(API_URL + '/country-lists', {
             headers: {
                 Authorization: GetTokens
             }
         })
         .then(response => response.data)
         .then(
             (result) => {
                 this.setState({
                     countries: result.data,
                     isLoading: false
                 });
             },
             (error) => {
                 this.setState({
                     error,
                     isLoading: false
                 });
             }
         )
 }

我发现了一些其他选项,例如promises,axios.all()。但是我想知道它们是否可以成为一个完整的解决方案。

axios.all([
axios.get(https://API_URL/users'),
axios.get(https://API_URL/country-list'
     ...)
    ])
.then(axios.spread((countries, users) => {
 // ... });

Promise.all([users, countries, products]).then(function(values) {
...
});

您应该采用哪种方式获取此类数据?或者是否有更好的解决方案?同时,考虑到Internet连接和各种错误。

2 个答案:

答案 0 :(得分:2)

我认为Axios都是最好的解决方案...

我还建议您看一下此链接,其中提出了一个很好的解决方案,可以执行多个异步调用: AsynPipe

答案 1 :(得分:0)

是的,Axios将满足您的需求。继续并完成它。