亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用vue3 axios實現數據渲染

發布時間:2022-08-09 17:38:01 來源:億速云 閱讀:972 作者:iii 欄目:編程語言

這篇“怎么使用vue3 axios實現數據渲染”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用vue3 axios實現數據渲染”文章吧。

1、axios的作用是什么呢?

axios主要是用于向后臺發起請求的,還有在請求中做更多是可控功能。

2、項目安裝axios及其他環境

打開cmd 進入項目根目錄(src同級目錄) ,輸入命令    npm install axios

3、新建axios.js     內容復制以下

怎么使用vue3 axios實現數據渲染

axios.js

import axios from "axios";
import qs from "qs";

// axios.defaults.baseURL = ''  //正式
axios.defaults.baseURL = 'http://localhost:8099' //測試

//post請求頭
axios.defaults.headers.post["Content-Type"] ="application/x-www-form-urlencoded;charset=UTF-8";
//設置超時
axios.defaults.timeout = 10000;

axios.interceptors.request.use(
    config => {
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

axios.interceptors.response.use(
    response => {
        if (response.status == 200) {
            return Promise.resolve(response);
        } else {
            return Promise.reject(response);
        }
    },
    error => {
        alert(`異常請求:${JSON.stringify(error.message)}`)
    }
);
export default {
    post(url, data) {
        return new Promise((resolve, reject) => {

            axios({
                method: 'post',
                url,
                data: qs.stringify(data),
            })
                .then(res => {
                    resolve(res.data)
                })
                .catch(err => {
                    reject(err)
                });
        })
    },

    get(url, data) {
        return new Promise((resolve, reject) => {
            axios({
                method: 'get',
                url,
                params: data,
            })
                .then(res => {
                    resolve(res.data)
                })
                .catch(err => {
                    reject(err)
                })
        })
    }
};

4、直接在vue頁面引用,axios.get或者.post方法

(vue2需要在main.js中掛載全局,vue3每次引用都需要  import,感覺有些臃腫)。

<template>
    <div>
        <table>
            <tr>
                <td>編號</td>
                <td>圖書名稱</td>
                <td>作者</td>
            </tr>
            <tr v-for="item in books">
                <td>{{item.id}}</td>
                <td>{{item.name}}</td>
                <td>{{item.author}}</td>
            </tr>
        </table>
        請求狀態碼:{{code}},請求狀態:{{msg}}
    </div>
</template>
<script>
    import axios from '../js/axios';
 
    export default {
        name: "Book",
        data() {
            return {
                code: "",
                msg: "",
                books: [],
            }
        },
        created() {   //生命周期函數(或者 mounted 函數)調用的方法才能運行
            this.getShops();
        },
        methods: {
            getShops: function () {
                const vm = this;
                axios.get("/book/findAll", {
                    // id: 1
                }).then(function (response) {
                    console.log(response.data);
                    let results = response.data || [];
                    let code = response.code;
                    let msg = response.msg;
                    if (results && results.length > 0) {
                        // 獲取搜索到的商品
                        vm.code = code;
                        vm.msg = msg;
                        vm.books = results;
                    }
                }).catch(function (error) {
                    console.log(error);
                    vm.code = 0;
                    vm.msg = error;
                    vm.books = [];
                })
            }
        }
    }
</script>

展示運行效果

后端接口:

怎么使用vue3 axios實現數據渲染

前端展示:

怎么使用vue3 axios實現數據渲染

5、踩坑記錄

問題1:vue3 axios Error: Network Error

跨域請求問題,我是在后端攔截器類中處理的 ,重寫 addCorsMappings 方法

   //跨域問題
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedHeaders("*")
                .allowedMethods("*")
                .allowedOriginPatterns("*")
                .allowCredentials(true);
    }

問題2:Cannot set properties of undefined (setting 'books')

或者ReferenceError: books is not defined

不能直接給變量賦值,需要通過  methods 方法中 const vm = this; 獲取變量賦值;

vue 請求接口代碼需要放置methods,且在created()或者mounted()周期函數中調用該方法。

created() {   //生命周期函數(或者 mounted 函數)調用的方法才能運行
    this.getShops();
},
methods: {
    getShops: function () {
    const vm = this;   //傳獲取的結果 給頁面
    }
}

問題3:Uncaught ReferenceError: Vue is not defined

或者Cannot read properties of undefined (reading 'get')

vue3不是通過Vue對象掛載,后面我每個頁面直接引用了axios(目前vue3好像只有這種方式)

怎么使用vue3 axios實現數據渲染

以上就是關于“怎么使用vue3 axios實現數據渲染”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武川县| 山丹县| 垦利县| 横峰县| 江孜县| 泰安市| 临沧市| 东安县| 买车| 武城县| 韩城市| 吴堡县| 天全县| 呼伦贝尔市| 佛坪县| 安多县| 武乡县| 濮阳市| 龙岩市| 南通市| 虎林市| 达日县| 威信县| 天峨县| 呼图壁县| 林芝县| 鹤壁市| 铁岭县| 乌鲁木齐县| 龙井市| 仁化县| 菏泽市| 兴和县| 平昌县| 宝应县| 红河县| 阳原县| 霍邱县| 广元市| 白城市| 织金县|