React Native-Axios:如何设置要在多个页面上使用的全局api调用?

时间:2019-01-16 13:15:26

标签: reactjs api class axios global

我如何创建一个全局api请求函数,该函数会基于其上的页面接收一个“ url”属性,但仅返回要在页面上呈现的结果数组。

示例
第1页(通过url 1属性)-> ApiRequest.js
ApiRequest -> 返回结果,错误或加载-> 的数组。第1页:在自己的设计中对数组进行map()。

第2页(通过URL 2属性)-> ApiRequest.js
ApiRequest -> 返回结果,错误或加载-> 的数组。第2页:将数组映射到自己的设计中。
...

我已经深入到下面的代码了;但我不知道如何仅返回状态结果,加载或错误,而我可以在需要api调用的页面上使用该结果。我希望我有点清楚,因为我很难解释这种情况。

import React from 'react';

const axios = require('axios');

export default class RequestApi  {
    constructor (props) {
        super (props)
        this.state = {
            results: [],
            loading: null,
            error: null,
            totalPages: null
        }
    }
    componentDidMount(){
        this.requestAPI();
    }
    requestAPI = () => {
        this.setState({error: null, results: []})
        axios({
            method: 'get',
            url: process.env.REACT_APP_API_LOCALS,
            responseType: 'json',
        })
        .then(
            (response) => {
                console.log(response)
                this.setState({
                    results: response.data.results,
                    error: null,
                    totalPages: Math.ceil(response.data.count / response.data.results.length)
                })  
            }
        )
        .catch(
            (error) => {
                this.setState({
                    loading: null,
                    error: true
                })  
            }
        );
    }
    render() {
        return ()
    }
}

0 个答案:

没有答案