React網絡請求


/*
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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM