React网络请求(示例代码)

loaderman 2021-03-05

栏目: 类库 ·

来源: loaderman

作者:loaderman

简介  这篇文章主要介绍了React网络请求(示例代码)以及相关的经验技巧,文章约7494字,浏览量121,点赞数1,值得参考!

/*
react获取服务器APi接口的数据:


    react中没有提供专门的请求数据的模块。但是可以使用任何第三方请求数据模块实现请求数据


    1、axios          https://github.com/axios/axios       axios的作者觉得jsonp不太友好,推荐用CORS方式更为干净(后端运行跨域)


          1、安装axios模块npm install axios  --save   /  npm install axios  --save


          2、在哪里使用就在哪里引入import axios from ‘axios‘

          3、看文档使用


            var api=‘http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20‘;

            axios.get(api)
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            });



    2、fetch-jsonp    https://github.com/camsong/fetch-jsonp


            1、安装 npm install fetch-jsonp  --save

            2、import fetchJsonp from ‘fetch-jsonp‘


            3、看文档使用

            fetchJsonp(‘/users.jsonp‘)
            .then(function(response) {
              return response.json()
            }).then(function(json) {
              console.log(‘parsed json‘, json)
            }).catch(function(ex) {
              console.log(‘parsing failed‘, ex)
            })


    3、其他请求数据的方法也可以...自己封装模块用原生js实现数据请求也可以...




远程测试API接口:


get请求:

    http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20


jsonp请求地址:

    http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&callback=?

  

*/
import React, { Component } from ‘react‘;

import ‘../assets/css/index.css‘;

import Axios from ‘./Axios‘;


import FetchJsonp from ‘./FetchJsonp‘

class Home extends Component {

    constructor(props){
        super(props);        
        this.state={ 
          title:‘首页组件‘         
        }
    }
    render() {
      return (
        <div>
          

            <Axios />

            <br />

            <FetchJsonp />

        </div>
      );
    }
  }
  
  export default Home;
  
import React, { Component } from ‘react‘;


import axios from ‘axios‘;

class Axios extends Component {
    constructor(props) {
        super(props);
        this.state = { 

            list:[]
         };
    }

    getData=()=>{


        //通过axios获取服务器数据

        var api=‘http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20‘;   //接口后台允许了跨域

        axios.get(api)
        .then((response)=> {
            console.log(response.data.result);

            //用到this要注意this指向

            this.setState({

                list:response.data.result

            })
        })
        .catch(function (error) {
            console.log(error);
        });


    }
    render() {
        return (


            <div>


                <h2>axios获取服务器数据</h2>


                <button onClick={this.getData}>获取服务器api接口数据</button>

                <hr />

                <ul>
                    
                    {

                        this.state.list.map((value,key)=>{

                            return <li key={key}>{value.title}</li>
                        })
                    }   

                    
                </ul>


            </div>
        );
    }
}

export default Axios;
import React, { Component } from ‘react‘;


import fetchJsonp from ‘fetch-jsonp‘;


class FetchJsonp extends Component {
    constructor(props) {
        super(props);
        this.state = {

            list:[]
        };
    }

    getData=()=>{

         //获取数据

        var api="http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20";
        fetchJsonp(api)
        .then(function(response) {
            return response.json()
        }).then((json)=> {
            // console.log(json);
            
            this.setState({

                list:json.result
            })

        }).catch(function(ex) {
            console.log(‘parsing failed‘, ex)
        })
    }
    render() {
        return (

            <div>


                <h2>FetchJsonp 获取服务器jsonp接口的数据</h2>

                <button onClick={this.getData}>获取服务器api接口数据</button>

                <hr />

                <ul>
                    
                    {

                        this.state.list.map((value,key)=>{

                            return <li key={key}>{value.title}</li>
                        })
                    }   

                    
                </ul>

            </div>
            
        );
    }
}

export default FetchJsonp;

 


以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文地址:https://www.cnblogs.com/loaderman/p/11556037.html

相关文章

React Native网络请求(示例代码)

React Native 网络请求封装:使用Promise封装fetch请求(示例代码)

React Native探索(五)使用fetch进行网络请求(示例代码)

React Native 网络层分析(示例代码)

Android上的React Native Fetch返回网络请求失败

React Native网络编程之Fetch(示例代码)

react native 网络get请求方式参数不可为undefined或null(示例代码)

React Native之Fetch简单封装、获取网络状态(示例代码)