国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3最佳實(shí)踐 第六章 Pinia,Vuex與axios,VueUse 4(axios)

這篇具有很好參考價(jià)值的文章主要介紹了Vue3最佳實(shí)踐 第六章 Pinia,Vuex與axios,VueUse 4(axios)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Axios

??axios 是一個(gè)基于 Promise 的 HTTP 客戶端,不僅可以與 vue.js 一起使用,還可以與其他前端框架以及后端 Node.js 一起使用。當(dāng)你想從包括后端服務(wù)器在內(nèi)的外部服務(wù)獲取數(shù)據(jù)時(shí),可以使用axios 中的方法很方便的獲得數(shù)據(jù)內(nèi)容。在本文檔中,我們將介紹如何在 vue.js 版本 3 的環(huán)境中使用 axios。對(duì)于 Vue 3,它不僅解釋了如何將它與 Options API 一起使用,還解釋了如何將它與 Composition API 一起使用。
官方文件地址https://axios-http.com/docs/intro

第一章 Vue3項(xiàng)目創(chuàng)建 1 Vue CLI 創(chuàng)建vue項(xiàng)目
第一章 Vue3項(xiàng)目創(chuàng)建 2 使用 Webpack 5 搭建 vue項(xiàng)目
第一章 Vue3項(xiàng)目創(chuàng)建 3 Vite 創(chuàng)建 vue項(xiàng)目
第二章 Vue3 基礎(chǔ)語(yǔ)法指令
第三章 Vue Router路由器的使用
第四章 VUE常用 UI 庫(kù) 1 ( element-plus,Ant ,naiveui,ArcoDesign)
第四章 VUE常用 UI 庫(kù) 2 ( ailwind 后臺(tái)框架)
第五章 Vue 組件應(yīng)用 1( Props )
第五章 Vue 組件應(yīng)用 2 ( Emit )
第五章 Vue 組件應(yīng)用 3( Slots )
第五章 Vue 組件應(yīng)用 4 ( provide 和 inject )
第五章 Vue 組件應(yīng)用 5 (Vue 插件)
第六章 Pinia,Vuex與axios,VueUse 1(Pinia)
第六章 Pinia,Vuex與axios,VueUse 2(Vuex)
第六章 Pinia,Vuex與axios,VueUse 3(VueUse)
第六章 Pinia,Vuex與axios,VueUse 4(axios)
第七章 TypeScript 上
第七章 TypeScript 中
第七章 TypeScript 下 創(chuàng)建Trello 任務(wù)管理器
第八章 ESLint 與 測(cè)試 ( ESLint )
第八章 ESLint 與 測(cè)試 ( Jest )
第八章 ESLint 與 測(cè)試 (TypeScript 中Jest與檢測(cè)環(huán)境集成)

1 axios 設(shè)置

??我們的目標(biāo)是學(xué)習(xí)如何將 axios 與 vue.js 一起使用,使用 cdn模式是最快和最簡(jiǎn)單的方法。在原生的HTML中使用axios 的方法獲得數(shù)據(jù)。在瀏覽器訪問(wèn)它并顯示一個(gè)遠(yuǎn)程訪問(wèn)獲得數(shù)據(jù)列表內(nèi)容。如果你不知道 axios 是什么,不用擔(dān)心,我們會(huì)慢慢解釋的。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>學(xué)習(xí)在vue中使用axios</title>
</head>
<body>
    <div id="app">
        <h1>{{ message }}</h1>
    </div>
    <script src="https://unpkg.com/vue@3"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
    Vue.createApp({
        el: '#app',
        data(){
            return {
                message: 'Hello Axios',
            }
        },
        mounted(){
            axios.get('https://jsonplaceholder.typicode.com/users')
                .then(response => console.log(response))
                .catch(error => console.log(error))
        }
}).mount('#app')
    </script>
</body>
</html>

在 node項(xiàng)目中導(dǎo)入axios組件。

$ npm install axios

在vue3 中使用axios獲得數(shù)據(jù)的例子。

<script setup>
import { onMounted } from 'vue';
import axios from 'axios'
onMounted(() => {
      axios
        .get('https://jsonplaceholder.typicode.com/users')
        .then((response) => console.log(response))
        .catch((error) => console.log(error));
});
</script>
<template>
<div >
  <div>業(yè)務(wù)內(nèi)容一覽</div>
</template>

2 axios方法

??axios處理方法分為同步處理與異步處理兩種,axios默認(rèn)的是異步處理方法。獲得的數(shù)據(jù)結(jié)果在下面幾個(gè)方法中進(jìn)行處理。

axios.get('/user?ID=12345')
  .then(function (response) {
 // 描述axios處理成功后要處理什么
    console.log(response);
  })
  .catch(function (error) {
 // 描述axios處理出錯(cuò)時(shí)要做什么
    console.log(error);
  })
  .finally(function () {
 // 無(wú)論axios的處理結(jié)果如何,都會(huì)執(zhí)行
  });

在 Vue 實(shí)例中使用 axios 中g(shù)et,post ,delete,put方法創(chuàng)建數(shù)據(jù)遠(yuǎn)程連接。

axios.get(url[, config])
axios.post(url[, data[, config]])
axios.delete(url[, config])
axios.head(url[, config])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])

??返回json對(duì)象在 response.data 的屬性中獲得數(shù)據(jù)內(nèi)容, response 包含的其他內(nèi)容不僅是數(shù)據(jù),還有status、headers、statusText、config。如果只關(guān)注狀態(tài),可以看到如果使用 GET 方法處理成功則返回狀態(tài)碼 200,使用 POST 方法返回狀態(tài)碼 201。

axios.get('https://jsonplaceholder.typicode.com/users')
      .then(response => {
        console.log(response.data)//數(shù)據(jù)內(nèi)容
        console.log(response.status)
        console.log(response.headers)
        console.log(response.statusText)
        console.log(response.config)
      })
      .catch(error => console.log(error))
}

1 axios 異步方法

通過(guò)異步方法獲得數(shù)據(jù)列表,在將列表中的數(shù)據(jù)內(nèi)容顯示到模板v-for指令中。

<script setup>
import {ref,onMounted  } from 'vue';
import axios from 'axios'
const userlist=ref([]);
onMounted(() => {
      axios
        .get('https://jsonplaceholder.typicode.com/users')
        .then((response) => userlist.value=response.data)
        .catch((error) => console.log(error));
    });
</script>
<template>
<div class="m-4 p-4" style="height:97vh;overflow-y:auto">
  <div>業(yè)務(wù)內(nèi)容一覽</div>
  <div v-for="list in userlist ">
    id:{{list.id}} name:{{list.name}}
  </div>
 </div>
</template>

2 axios 同步方法

??Composition API 中使用了 async 和 await 設(shè)置的函數(shù)為同步函數(shù)。很多業(yè)務(wù)都需要axios 同步方法來(lái)處理,我們將axios處理函數(shù)設(shè)置關(guān)鍵字async 和 await,這個(gè)函數(shù)就是同步函數(shù)。

同步處理關(guān)鍵字 async , await

<script setup>
import {ref,onMounted  } from 'vue';
import axios from 'axios'
const userlist=ref([]);
    // 使用 async 和 await 函數(shù)定義同步關(guān)鍵字
    onMounted(async () => {
      try {
        const response = await axios.get(
          'https://jsonplaceholder.typicode.com/users'
        );
        userlist.value=response.data
      } catch (error) {
        console.log(error);
      }
    });   
</script>
<template>
<div class="m-4 p-4" style="height:97vh;overflow-y:auto">
  <div>業(yè)務(wù)內(nèi)容一覽</div>
      <div v-for="list in userlist ">
        id:{{list.id}} name:{{list.name}}
      </div>
  </div>
</template>

??普通方法設(shè)置成同步方法。

<script setup>
import {ref,onMounted  } from 'vue';
import axios from 'axios'
const userlist=ref([]);
    onMounted( () => {
      init();
    });   
    //定義同步方法
    const init =async () => {
      try {
        const response = await axios.get(
          'https://jsonplaceholder.typicode.com/users'
        );
        userlist.value=response.data
      } catch (error) {
        console.log(error);
      }
    }
</script>
<template>
<div class="m-4 p-4" style="height:97vh;overflow-y:auto">
  <div>業(yè)務(wù)內(nèi)容一覽</div>
      <div v-for="list in userlist ">
        id:{{list.id}} name:{{list.name}}
      </div>
  </div>
</template>

Vue3最佳實(shí)踐 第六章 Pinia,Vuex與axios,VueUse 4(axios),vue,javascript,vue,前端框架

3 創(chuàng)建實(shí)例與配置攔截器

???您可以使用 create 方法創(chuàng)建一個(gè) axios 實(shí)例??梢栽?create 方法的參數(shù)中設(shè)置 baseURL,headers表頭信息等其他url請(qǐng)求設(shè)置。axios 實(shí)例

<script setup>
import {ref,onMounted} from 'vue';
import axios from 'axios'
const userlist=ref([]);
    onMounted( () => {
      init();
    });  
const headers = {
   Authorization: `Bearer`
}     
    const init =async () => {
      const instance = axios.create({
        baseURL:'https://jsonplaceholder.typicode.com/users',
        headers: headers
      });
        const response = await instance.get();
        userlist.value=response.data
    }
</script>
<template>
<div class="m-4 p-4" style="height:97vh;overflow-y:auto">
  <div>業(yè)務(wù)內(nèi)容一覽</div>
  <div v-for="list in userlist ">
    id:{{list.id}} name:{{list.name}}
  </div>
  </div>
</template>

配置攔截器

??攔截器可以在 axios 發(fā)送請(qǐng)求之前或從服務(wù)器返回響應(yīng)時(shí)對(duì) Request 和 Response 對(duì)象進(jìn)行業(yè)務(wù)處理的監(jiān)聽(tīng)方法。

axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
axios.interceptors.request.use((config) => {
  console.log(config)
  return config;
});
//在攔截器中設(shè)置 baseURL
axios.interceptors.request.use((config) => {
 config.baseURL = 'https://test.com';
  console.log(config)
  return config;
});

在瀏覽器中可以看到 baseURL 已被覆蓋。顯示錯(cuò)誤消息,因?yàn)闊o(wú)法訪問(wèn) https://test.com這個(gè)url地址。

axios.interceptors.response.use((response) => {
  console.log(response);
  return response;
});

??Response 可用于在認(rèn)證失敗并返回狀態(tài)碼401(Unauthorized)時(shí)候,作認(rèn)證失敗時(shí)的注銷處理。通過(guò)檢查每個(gè)響應(yīng)的狀態(tài)碼,可以根據(jù)每個(gè)代碼進(jìn)行不同的業(yè)務(wù)處理。

axios.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response.status === 401) {
      //logout 注銷處理
    }
    return Promise.reject(error);
  }
);

4 axios 插件plugins

??創(chuàng)建一個(gè) axios.js 文件,在文件中定義一個(gè)axios插件plugins功能。插件中允許我們?cè)O(shè)置一個(gè)共通的 baseURL方法路徑,項(xiàng)目中使用axios方法可以直接引用到這個(gè)公共url路徑。

axios.js

import axios from 'axios';
const axiosPlugin = {
  install(app, options) {
    const axiosInstance = axios.create({
      baseURL: options.baseURL,
    });
    app.provide('axios', axiosInstance);
  },
};
export default axiosPlugin;

main.js

項(xiàng)目中vue組件引入axiosPlugin插件功能,插件中引入一個(gè)共通的baseURL: 'https://jsonplaceholder.typicode.com/'訪問(wèn)路徑。

import { createApp } from 'vue'
import router from './router'
import App from './App.vue'
import axiosPlugin from './axios';
const app = createApp(App)
app.use(router)
app.use(axiosPlugin, {
    //所有axios訪問(wèn)路徑頭
    baseURL: 'https://jsonplaceholder.typicode.com/'
 });
app.mount('#app')

axios使用

??在vue組件中獲得inject 過(guò)濾方法,設(shè)置每個(gè)axios對(duì)象訪問(wèn)url的時(shí)候都要通過(guò)inject方法過(guò)濾訪問(wèn)的url地址。所有的地址baseURL+ 后臺(tái)系統(tǒng)的業(yè)務(wù)路徑文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729662.html

<script setup>
import {ref,onMounted  } from 'vue';
import { inject } from 'vue';
const axios = inject('axios');
const userlist=ref([]);
onMounted( () => {
  init();
}); 
const init=async ()=>{
   //訪問(wèn)地址是 'https://jsonplaceholder.typicode.com/'+ '/users'
  const response = await axios.get('/users');
  console.log(response.data);
  userlist.value=response.data;

}
</script>
<template>
<div class="m-4 p-4" style="height:97vh;overflow-y:auto">
  <div>業(yè)務(wù)內(nèi)容一覽</div>
  <div v-for="list in userlist ">
    id:{{list.id}} name:{{list.name}}
  </div>
 </div>
</template>

到了這里,關(guān)于Vue3最佳實(shí)踐 第六章 Pinia,Vuex與axios,VueUse 4(axios)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue 網(wǎng)絡(luò)處理 - axios 異步請(qǐng)求的使用,請(qǐng)求響應(yīng)攔截器(最佳實(shí)踐)

    Vue 網(wǎng)絡(luò)處理 - axios 異步請(qǐng)求的使用,請(qǐng)求響應(yīng)攔截器(最佳實(shí)踐)

    目錄 一、axiox 1.1、axios 簡(jiǎn)介 1.2、axios 基本使用 1.2.1、下載核心 js 文件. 1.2.2、發(fā)送 GET 異步請(qǐng)求 1.2.3、發(fā)送 POST?異步請(qǐng)求 1.2.4、發(fā)送 GET、POST 請(qǐng)求最佳實(shí)踐 1.3、請(qǐng)求響應(yīng)攔截器 1.3.1、攔截器解釋 1.3.2、請(qǐng)求攔截器的使用 1.3.3、響應(yīng)攔截器的使用 1.3.4、攔截器在 Vue 腳手架中的

    2024年02月04日
    瀏覽(22)
  • 搭建vue3,TypeScript,pinia,scss,element-plus,axios,echarts,vue-router,babylon,eslint,babel,拖拽,rem自適應(yīng)大屏

    搭建vue3,TypeScript,pinia,scss,element-plus,axios,echarts,vue-router,babylon,eslint,babel,拖拽,rem自適應(yīng)大屏

    1.1、使用vite初始化項(xiàng)目 1.1.1、創(chuàng)建項(xiàng)目文件夾 1.1.2、進(jìn)入項(xiàng)目文件夾 1.1.3、初始化項(xiàng)目 1.1.4、輸入項(xiàng)目名稱 1.1.5、選擇vue 1.1.6、選擇TypeScript 1.1.7、查看當(dāng)前源(非必要) 1.1.8、更換為國(guó)內(nèi)鏡像(非必要) 1.1.9、進(jìn)入項(xiàng)目 1.1.10、安裝依賴 1.1.11、運(yùn)行項(xiàng)目 1.1.12、修改部分報(bào)錯(cuò)信息

    2024年04月23日
    瀏覽(40)
  • Vue的鼠標(biāo)鍵盤(pán)事件
pinia和vuex的區(qū)別 Vuex 和 Pinia 的優(yōu)缺點(diǎn)

    Vue的鼠標(biāo)鍵盤(pán)事件 pinia和vuex的區(qū)別 Vuex 和 Pinia 的優(yōu)缺點(diǎn)

    鼠標(biāo)事件(將v-on簡(jiǎn)寫(xiě)為@) 鍵盤(pán)事件 輸入框事件 但是element-ui在實(shí)際使用時(shí),前四條觸發(fā)方法全部都是input方式( 在 Input 值改變時(shí)觸發(fā) )觸發(fā),遂使用原生的@blur才完成效果 表單輸入相關(guān)修飾符? .lazy? ? ?input 輸入完畢時(shí) .number? ?input只獲取數(shù)字類型的輸入 .trim? ?去除用戶輸入中

    2024年02月12日
    瀏覽(19)
  • vue中使用Pinia和Vuex詳解

    vue中使用Pinia和Vuex詳解

    我們使用Vue2的時(shí)候,Vuex作為一個(gè)狀態(tài)管理工具在組件中使用方便了很多。Vue3推出后,雖然相對(duì)于Vue2很多東西都變了,但是核心的東西還是沒(méi)有變的,比如說(shuō)狀態(tài)管理、路由等等。實(shí)際上,pinia就是Vuex的升級(jí)版,官網(wǎng)也說(shuō)過(guò),為了尊重原作者,所以取名pinia,而沒(méi)有取名Vue

    2024年02月16日
    瀏覽(18)
  • vue:狀態(tài)管理庫(kù)及其部分原理(Vuex、Pinia)

    多組件的狀態(tài)共享問(wèn)題: 當(dāng)多個(gè)組件需要訪問(wèn)和修改相同的數(shù)據(jù)時(shí),我們需要在組件之間傳遞 props或者使用事件總線。當(dāng),應(yīng)用就會(huì)變得難以維護(hù)和調(diào)試。 多組件狀態(tài)同步問(wèn)題: 當(dāng)一個(gè)組件修改了狀態(tài),其他組件可能無(wú)法立即得知該變化。 狀態(tài)變更的追蹤問(wèn)題: 無(wú)法追蹤

    2024年01月19日
    瀏覽(30)
  • Vue3最佳實(shí)踐 第八章 ESLint 與 測(cè)試 ( ESLint )

    Vue3最佳實(shí)踐 第八章 ESLint 與 測(cè)試 ( ESLint )

    ???在所有的JavaScript 項(xiàng)目開(kāi)發(fā)中我們都會(huì)接觸到 ESLint 這個(gè)詞,ESLint 是個(gè)什么樣的組件會(huì)給為項(xiàng)目做些什么嗎?ESLint 是一種檢查語(yǔ)法錯(cuò)誤以及代碼是否按照預(yù)定規(guī)則編寫(xiě)的工具。ESLint 可以幫助開(kāi)發(fā)者發(fā)現(xiàn)代碼中潛在的錯(cuò)誤。在Vue項(xiàng)目中Eslint一般都會(huì)配合其他語(yǔ)法檢測(cè)工具

    2024年02月04日
    瀏覽(18)
  • 【Vue3】利用VueUse實(shí)現(xiàn)useInfiniteScroll虛擬滾動(dòng)操作

    【Vue3】利用VueUse實(shí)現(xiàn)useInfiniteScroll虛擬滾動(dòng)操作

    我們先來(lái)看一下效果展示 1、infiniteScroll無(wú)限滾動(dòng)是一種在網(wǎng)頁(yè)或應(yīng)用程序中實(shí)現(xiàn)動(dòng)態(tài)加載內(nèi)容的技術(shù),它允許用戶在滾動(dòng)頁(yè)面時(shí)無(wú)需點(diǎn)擊分頁(yè)或刷新按鈕自動(dòng)加載更多內(nèi)容,從而提供更流暢的用戶體驗(yàn),傳統(tǒng)的分頁(yè)加載需要用戶點(diǎn)擊下一頁(yè)或下載更多的按鈕來(lái)獲取更多內(nèi)容,

    2024年02月01日
    瀏覽(23)
  • vue3中的吸頂導(dǎo)航交互實(shí)現(xiàn) | VueUse插件

    vue3中的吸頂導(dǎo)航交互實(shí)現(xiàn) | VueUse插件

    目的:瀏覽器上下滾動(dòng)時(shí),若距離頂部的滾動(dòng)距離大于78px,吸頂導(dǎo)航顯示,小于78px隱藏。使 用vueuse插件中的 useScroll方法 ??????? 和 動(dòng)態(tài)類名控制 進(jìn)行實(shí)現(xiàn) 項(xiàng)目中導(dǎo)入,解構(gòu)出 useScroll方法的其他參數(shù): 參考:useScroll | VueUse中文文檔 (vueusejs.com)

    2024年02月09日
    瀏覽(18)
  • 教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳實(shí)踐@2023

    教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳實(shí)踐@2023

    目錄 1. 本篇適用范圍與目的 1.1. 適用范圍 1.2. 目的 2. 牛刀小試 - 先看到地球 2.1. 創(chuàng)建 Vue3 - TypeScript 工程并安裝 cesium 2.2. 清理不必要的文件并創(chuàng)建三維地球 2.3. 中段解疑 - 奇怪的路徑 2.4. 打包部署 2.5. 有限的優(yōu)化 3. CesiumJS 前置知識(shí) 3.1. CesiumJS 依賴包中的資料說(shuō)明 3.2. 構(gòu)建后

    2023年04月09日
    瀏覽(16)
  • VueUse 是怎么封裝Vue3 Provide/Inject 的?

    Provide 和 Inject 可以解決 Prop 逐級(jí)透?jìng)鲉?wèn)題。注入值類型不會(huì)使注入保持響應(yīng)性,但注入一個(gè)響應(yīng)式對(duì)象,仍然有響應(yīng)式的效果。 Provide 的問(wèn)題是無(wú)法追蹤數(shù)據(jù)的來(lái)源,在任意層級(jí)都能訪問(wèn)導(dǎo)致數(shù)據(jù)追蹤比較困難,不知道是哪一個(gè)層級(jí)聲明了這個(gè)或者不知道哪一層級(jí)或若干個(gè)層

    2024年02月03日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包