React 中用jQuery的ajax 和 axios請求資料

Winter_Wang發表於2019-01-18

目錄結構  單頁檔案Records.js

React  中用jQuery的ajax 和 axios請求資料

模擬一個mock資料:

1.https://www.mockapi.io/  可以使用github賬號登陸

2.新建專案

React  中用jQuery的ajax 和 axios請求資料

3.我在此命名專案為accunt-app

React  中用jQuery的ajax 和 axios請求資料

4.填寫你資料的名字

React  中用jQuery的ajax 和 axios請求資料

5.資料的健和型別React  中用jQuery的ajax 和 axios請求資料

6.生成後可調節你想要的條數

React  中用jQuery的ajax 和 axios請求資料

7.可以在Data裡預覽資料

React  中用jQuery的ajax 和 axios請求資料

8.可在終端裡看請求狀態   API下面的那條url後面加上你的資料名

React  中用jQuery的ajax 和 axios請求資料

Records.js中所有內容

先說jquery的ajax:

1.專案中安裝jQuery:yarn add jquery

2.引入 jquery :import $ from 'jquery'

3.建立檢視表格

4.在鉤子函式componentDidMount()中呼叫ajax

5.載入成功失敗,state中isLoaded都是true

React  中用jQuery的ajax 和 axios請求資料

6.state中定義error時的狀態,isLoaded載入時的狀態,預設為false,和record初始化資料

成功時將state中的record賦給response資料,就是我們建立的mock資料 

7.用if  else判斷檢視是否正常載入,獲取錯誤時顯示給使用者的內容,載入時顯示給使用者的內容,成功時展示給使用者正常資料

import React, { Component } from 'react';

//如果只需要用jQuery來獲取後端資料,別的不需要,可以按需匯入,則下面使用時不用加$符號
//import {getJSON} from 'jquery';
//import $ from 'jquery'
import axios from 'axios'

class Records extends Component {
    constructor(props) {
        super(props);
        this.state = {
            error:null,
            isLoaded:false,
            records:[]
        }
    }

    //在鉤子函式中使用jQuery獲取後端資料response成功則返回資料,失敗返回error
    componentDidMount(){
        axios.get("https://5c407abd2928860014e07025.mockapi.io/api/v1/records")
            .then(
                response =>this.setState({
                    records:response.data,
                    isLoaded:true
                }),
            ).catch(
                error =>this.setState({
                    isLoaded:true,
                    error:error
                }),
            )
    }

    render() {
        //相當於將state中的值匯出,類似於const error = this.state.error;
        const {error,isLoaded,}=this.state;
        if(error){
            return <div>
                Error:{error.message}
            </div>
        }else if(!isLoaded){
            return <div>
                Loading...
            </div>
        }else {
            return (
                <div>
                    <table className="table table-border">
                        <thead>
                        <tr>
                            <th>日期</th>
                            <th>名稱</th>
                            <th>金額</th>
                        </tr>
                        </thead>
                        <tbody>
                        {this.state.records.map((record,i)=>
                            <tr key={record.id}>
                                <td>{record.date}</td>
                                <td>{record.title}</td>
                                <td>{record.amount}</td>
                            </tr>
                        )}
                        </tbody>
                    </table>
                </div>
            );
        }
    }
}

export default Records;

複製程式碼

axios方法 只需要將axios替換jQuery就可以

1.安裝 npm install axios 或用yarn add axios

2.在需要用到的頁面引入 import axios from 'axios'

3.替換jQuery請求部分 請求成功獲取資料略有不同,一個直接獲取response就是資料,一個要獲取下面的data才能獲取到資料

componentDidMount(){
    axios.get("https://5c407abd2928860014e07025.mockapi.io/api/v1/records")
        .then(
            response =>this.setState({
                records:response.data,
                isLoaded:true
            }),
        ).catch(
            error =>this.setState({
                isLoaded:true,
                error:error
            }),
        )
}複製程式碼

最後效果

React  中用jQuery的ajax 和 axios請求資料


相關文章