您好,登錄后才能下訂單哦!
這篇“怎么使用vue3 axios實現數據渲染”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用vue3 axios實現數據渲染”文章吧。
1、axios的作用是什么呢?
axios主要是用于向后臺發起請求的,還有在請求中做更多是可控功能。
2、項目安裝axios及其他環境
打開cmd 進入項目根目錄(src同級目錄) ,輸入命令 npm install axios
3、新建axios.js 內容復制以下
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>
展示運行效果
后端接口:
前端展示:
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實現數據渲染”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。