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

vue全家桶進(jìn)階之路46:Vue3 Axios攔截器

這篇具有很好參考價(jià)值的文章主要介紹了vue全家桶進(jìn)階之路46:Vue3 Axios攔截器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在Vue.js 3中,使用Axios與Vue.js 2.x中類似,但是需要進(jìn)行一些修改和更新,下面是Vue.js 3中Axios的定義和使用方式:

首先,你需要安裝Axios和Vue.js 3.x,可以使用npm或yarn等包管理工具安裝:

npm install axios vue@next

然后,在你的Vue.js 3應(yīng)用程序中,你可以使用以下代碼來導(dǎo)入和使用Axios:

import { ref } from 'vue'
import axios from 'axios'

export default {
  setup() {
    const data = ref(null)
    const error = ref(null)

    axios.get('/api/data')
      .then(response => {
        data.value = response.data
      })
      .catch(error => {
        error.value = error
      })

    return { data, error }
  }
}

上面的代碼使用Axios發(fā)出一個(gè)GET請(qǐng)求,從API端點(diǎn)/api/data獲取數(shù)據(jù),并將響應(yīng)數(shù)據(jù)賦值給Vue組件的data變量中,如果請(qǐng)求出錯(cuò),則將錯(cuò)誤信息賦值給error變量。

注意,在Vue.js 3中,使用Axios時(shí),需要將其包裝在Vue 3的Reactivity API中,例如,上面的代碼中,使用了Vue 3的ref函數(shù)將dataerror變量轉(zhuǎn)換為響應(yīng)式對(duì)象。

除此之外,在Vue.js 3中,你可以將Axios作為插件使用,并在Vue實(shí)例中進(jìn)行全局配置。下面是一個(gè)示例:

import { createApp } from 'vue'
import axios from 'axios'
import App from './App.vue'

const app = createApp(App)

app.config.globalProperties.$axios = axios
// 在這里添加更多的全局配置

app.mount('#app')

上面的代碼將Axios作為Vue的插件,并將其添加到Vue實(shí)例的全局屬性$axios中,以便在應(yīng)用程序的任何組件中使用。

總之,Vue.js 3中的Axios使用與Vue.js 2.x基本相同,但需要使用Vue 3的Reactivity API將數(shù)據(jù)轉(zhuǎn)換為響應(yīng)式對(duì)象。此外,你可以將Axios作為Vue的插件使用,并在Vue實(shí)例中進(jìn)行全局配置。

globalProperties?

globalProperties 是 Vue 3 中的一個(gè)全局配置對(duì)象,它允許你在應(yīng)用程序的任何地方添加自定義的全局屬性和方法。

在 Vue.js 3 中,你可以使用 app.config.globalProperties 對(duì)象添加全局屬性和方法,這樣在 Vue 實(shí)例中就可以直接訪問它們,而不需要在每個(gè)組件中都進(jìn)行導(dǎo)入。

例如,你可以通過以下方式在 globalProperties 中添加一個(gè)全局屬性 $myGlobalData

const app = createApp(App)

app.config.globalProperties.$myGlobalData = { name: 'John', age: 30 }

app.mount('#app')

這樣,在 Vue 組件中就可以通過 $myGlobalData 訪問這個(gè)全局屬性:

export default {
  setup() {
    const data = ref($myGlobalData)
    return { data }
  }
}

同樣,你也可以在 globalProperties 中添加全局方法:

const app = createApp(App)

app.config.globalProperties.$myGlobalMethod = function() {
  console.log('This is a global method!')
}

app.mount('#app')

然后,在 Vue 組件中就可以通過 $myGlobalMethod() 調(diào)用這個(gè)全局方法:

export default {
  setup() {
    $myGlobalMethod() // 輸出:This is a global method!
  }
}

需要注意的是,globalProperties 中添加的全局屬性和方法會(huì)在所有 Vue 組件中共享,并且會(huì)被所有組件實(shí)例繼承。因此,你需要確保添加的全局屬性和方法不會(huì)與組件實(shí)例中的屬性和方法沖突。

ctx?

在 Vue 3 中,ctx 是組件上下文對(duì)象,它包含了一個(gè)組件實(shí)例的所有屬性和方法。

在 Vue 3 的組件中,你可以使用 setup() 函數(shù)來編寫組件的邏輯代碼。setup() 函數(shù)會(huì)接收一個(gè) ctx 參數(shù),它是一個(gè)組件上下文對(duì)象,包含了許多屬性和方法,可以幫助你訪問和操作組件實(shí)例。

下面是 ctx 對(duì)象中的一些常用屬性和方法:

  • attrs: 包含了所有傳遞給組件的非響應(yīng)式屬性,例如 id、classstyle 等。

  • emit: 用于觸發(fā)自定義事件,可以傳遞任意數(shù)量的參數(shù)。例如,ctx.emit('my-event', arg1, arg2) 將觸發(fā)名為 my-event 的自定義事件,并傳遞 arg1arg2 兩個(gè)參數(shù)。

  • expose: 用于暴露組件的屬性和方法,使它們可以被父組件訪問。例如,ctx.expose({ myProp, myMethod })myProp 屬性和 myMethod 方法暴露給父組件。

  • slots: 包含了所有插槽內(nèi)容的函數(shù)或者節(jié)點(diǎn),可以使用 v-slot 或者 slot-scope 來定義插槽。

  • attrs: 包含了所有傳遞給組件的非響應(yīng)式屬性,例如 id、class、style 等。

  • listeners: 包含了所有綁定在組件上的事件監(jiān)聽器,可以通過 v-on 或者 @ 綁定事件。例如,<my-component @click="handleClick" /> 將在 ctx.listeners 中包含一個(gè)名為 click 的屬性,它的值是 handleClick 方法。

  • root: 當(dāng)前組件樹中的根組件實(shí)例。

  • refs: 包含了所有在組件上使用 ref 注冊(cè)的 DOM 元素或組件實(shí)例,可以使用 ctx.refs.refName 訪問。

  • attrs: 包含了所有傳遞給組件的非響應(yīng)式屬性,例如 idclass、style 等。

需要注意的是,ctx 對(duì)象中的屬性和方法都是只讀的,你不能修改它們的值。如果你需要修改組件實(shí)例的屬性或者方法,你可以在 setup() 函數(shù)中使用 refreactive、computed 等響應(yīng)式 API 來創(chuàng)建可響應(yīng)的變量和方法。

Proxy?

Proxy 是 ES6 中新增的一種原生對(duì)象,用于在運(yùn)行時(shí)動(dòng)態(tài)地?cái)r截和處理 JavaScript 對(duì)象的操作。它提供了一個(gè)可編程的代理,可以對(duì)目標(biāo)對(duì)象進(jìn)行操作前進(jìn)行預(yù)處理和過濾,從而可以用來實(shí)現(xiàn)許多高級(jí)功能,例如數(shù)據(jù)綁定、數(shù)據(jù)校驗(yàn)、屬性攔截等。

Proxy 對(duì)象的基本用法如下:

let target = { name: 'John', age: 30 };
let proxy = new Proxy(target, {
  get: function(target, prop, receiver) {
    console.log(`Getting ${prop} from target`);
    return target[prop];
  },
  set: function(target, prop, value, receiver) {
    console.log(`Setting ${prop} to ${value} on target`);
    target[prop] = value;
    return true;
  }
});

proxy.name; // Output: "Getting name from target", "John"
proxy.age; // Output: "Getting age from target", 30
proxy.location = "New York"; // Output: "Setting location to New York on target"

在上面的例子中,我們創(chuàng)建了一個(gè)名為 target 的普通對(duì)象,然后用 Proxy 對(duì)象對(duì)其進(jìn)行包裝。在 Proxy 對(duì)象的第二個(gè)參數(shù)中,我們定義了一個(gè)攔截器對(duì)象,包含了兩個(gè)方法 getset。當(dāng)我們對(duì) proxy 對(duì)象進(jìn)行屬性讀取時(shí),會(huì)觸發(fā) get 方法,輸出一個(gè)日志和目標(biāo)對(duì)象中對(duì)應(yīng)屬性的值;當(dāng)我們對(duì) proxy 對(duì)象進(jìn)行屬性設(shè)置時(shí),會(huì)觸發(fā) set 方法,輸出一個(gè)日志,并將目標(biāo)對(duì)象中對(duì)應(yīng)屬性的值進(jìn)行更新。

除了上面的 getset 方法之外,Proxy 還提供了許多其他的攔截方法,包括 apply、constructdefineProperty、deletePropertygetOwnPropertyDescriptor、getPrototypeOfhas、isExtensibleownKeys、preventExtensions、setPrototypeOf 等。你可以在這些攔截方法中進(jìn)行各種預(yù)處理和過濾操作,從而實(shí)現(xiàn)各種高級(jí)功能。

需要注意的是,Proxy 對(duì)象只能對(duì)對(duì)象進(jìn)行操作,不能對(duì)原始值進(jìn)行操作。此外,由于 Proxy 對(duì)象會(huì)對(duì)目標(biāo)對(duì)象進(jìn)行包裝,所以會(huì)導(dǎo)致一定的性能損耗,因此應(yīng)該謹(jǐn)慎使用。

?

getCurrentInstance?

ctxgetCurrentInstance 都是 Vue 3 中的全局 API,用于在組件中獲取當(dāng)前上下文和當(dāng)前組件實(shí)例對(duì)象,但它們的作用不完全相同。

ctx 是一個(gè)包含了組件實(shí)例對(duì)象以及一些額外屬性和方法的上下文對(duì)象,它可以在組件的模板和組合式 API 中使用。ctx 包含了許多屬性和方法,例如 attrsemit、slotsroot 等,這些屬性和方法可以讓我們更方便地訪問組件的數(shù)據(jù)和方法。例如,我們可以通過 ctx.attrs 來訪問組件的屬性,通過 ctx.emit 來觸發(fā)組件的自定義事件。

getCurrentInstance 則是一個(gè)用于獲取當(dāng)前組件實(shí)例對(duì)象的全局 API,它可以在組件的模板和組合式 API 中使用。與 ctx 不同的是,getCurrentInstance 返回的是當(dāng)前組件實(shí)例對(duì)象本身,而不是一個(gè)包含了組件實(shí)例對(duì)象的上下文對(duì)象。這意味著,通過 getCurrentInstance 我們可以訪問到組件實(shí)例對(duì)象的所有屬性和方法,而不僅僅是 ctx 中包含的屬性和方法。例如,我們可以通過 getCurrentInstance().$refs 來訪問組件的引用。

需要注意的是,ctxgetCurrentInstance 都是 Vue 3 中的 API,在 Vue 2 中并不存在。在 Vue 2 中,我們可以通過 this 來訪問組件實(shí)例對(duì)象和組件的數(shù)據(jù)和方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-419704.html

到了這里,關(guān)于vue全家桶進(jìn)階之路46:Vue3 Axios攔截器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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全家桶進(jìn)階之路39:Vue3 狀態(tài)管理

    Vue3 的狀態(tài)管理主要是通過 Vuex 4 來實(shí)現(xiàn)。Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 在Vue3的狀態(tài)管理中,以下是各個(gè)屬性的作用: state :存儲(chǔ)應(yīng)用程序中的狀

    2023年04月18日
    瀏覽(19)
  • vue全家桶進(jìn)階之路37:Vue3 狀態(tài)管理

    Vue3 的狀態(tài)管理主要是通過 Vuex 4 來實(shí)現(xiàn)。Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 在Vue3的狀態(tài)管理中,以下是各個(gè)屬性的作用: state :存儲(chǔ)應(yīng)用程序中的狀

    2023年04月18日
    瀏覽(22)
  • vue全家桶進(jìn)階之路33:Vue3 計(jì)算屬性computed

    在Vue3中,計(jì)算屬性可以使用 computed 函數(shù)來定義。 computed 函數(shù)接受兩個(gè)參數(shù):第一個(gè)參數(shù)是一個(gè)函數(shù),該函數(shù)返回計(jì)算屬性的值;第二個(gè)參數(shù)是一個(gè)可選的配置對(duì)象,可以包含getter和setter函數(shù),以及控制計(jì)算屬性緩存的緩存配置。 Vue3中的計(jì)算屬性與Vue2中的計(jì)算屬性相比有以

    2023年04月18日
    瀏覽(20)
  • vue全家桶進(jìn)階之路34:Vue3 路由基本配置

    在Vue3中,路由的基本配置是通過使用Vue Router庫(kù)來實(shí)現(xiàn)的。以下是Vue3中路由的基本配置步驟: 安裝Vue Router 使用npm或yarn在項(xiàng)目中安裝Vue Router: 創(chuàng)建路由實(shí)例 創(chuàng)建一個(gè)路由實(shí)例并定義路由規(guī)則。路由規(guī)則是一個(gè)對(duì)象數(shù)組,其中每個(gè)對(duì)象都定義了一個(gè)路由的路徑和組件。 例如

    2023年04月18日
    瀏覽(24)
  • vue全家桶進(jìn)階之路32:Vue3 WatchEffect和watch 監(jiān)聽

    在 Vue 3 中, watchEffect 是一個(gè)用于監(jiān)聽響應(yīng)式數(shù)據(jù)變化的 API。它可以在函數(shù)內(nèi)部自動(dòng)跟蹤數(shù)據(jù)的依賴,并在依賴變化時(shí)重新運(yùn)行函數(shù)。 watchEffect ?的作用以及各個(gè)參數(shù)的功能講解: watchEffect(effect: (onInvalidate: InvalidateCbRegistrator) = void | (() = void) | Promisevoid, options?: WatchEffectOptio

    2023年04月17日
    瀏覽(23)
  • vue全家桶進(jìn)階之路50:Vue3 環(huán)境變量+跨域設(shè)置實(shí)例

    使用.env加后綴的方式來建立某個(gè)模式下的環(huán)境變量, 例如:項(xiàng)目根目錄新建兩個(gè)環(huán)境變量文件(development開發(fā)環(huán)境和production生產(chǎn)環(huán)境): ?在新建的兩個(gè)環(huán)境變量文件中設(shè)置相同的環(huán)境變量名: 環(huán)境變量名稱必須以\\\"VUE_API_\\\"+名稱的格式,否則不生效,這個(gè)格式是死的。至于

    2023年04月21日
    瀏覽(18)
  • vue全家桶進(jìn)階之路48:Vue3 跨域配置devServer的參數(shù)和設(shè)置

    devServer 是一個(gè)用于配置開發(fā)服務(wù)器的選項(xiàng)對(duì)象。它可以用來配置服務(wù)器的各種選項(xiàng),例如代理,端口號(hào),HTTPS 等。 以下是一些常用的 devServer 參數(shù)和設(shè)置: port :指定開發(fā)服務(wù)器的端口號(hào),默認(rèn)為 8080 。 host :指定開發(fā)服務(wù)器的主機(jī)名,默認(rèn)為 localhost 。 https :開啟 HTTPS,可

    2023年04月21日
    瀏覽(25)
  • vue全家桶進(jìn)階之路43:Vue3 Element Plus el-form表單組件

    在 Element Plus 中, el-form 是一個(gè)表單組件,用于創(chuàng)建表單以便用戶填寫和提交數(shù)據(jù)。它提供了許多內(nèi)置的驗(yàn)證規(guī)則和驗(yàn)證方法,使表單驗(yàn)證更加容易。 使用 el-form 組件,您可以將表單控件組織在一起,并對(duì)表單進(jìn)行驗(yàn)證,以確保提交的數(shù)據(jù)符合預(yù)期的格式和要求。該組件具有

    2023年04月20日
    瀏覽(24)
  • vue全家桶進(jìn)階之路31:Vue3 數(shù)據(jù)和方法的雙向綁定ref、reactive、toRefs

    ref 在 Vue 3 中,你可以使用 setup 函數(shù)來定義組件的數(shù)據(jù)和方法。在 setup 函數(shù)中,你可以使用 ref 、 reactive 和 computed 等 Vue 3 的響應(yīng)式 API 來定義數(shù)據(jù),并返回一個(gè)包含你需要公開的數(shù)據(jù)和方法的對(duì)象。下面是一個(gè)例子: 在這個(gè)例子中,我們使用 ref 函數(shù)來定義了一個(gè)名為 mes

    2023年04月19日
    瀏覽(27)
  • Vue axios 攔截器

    Vue axios 攔截器

    正常情況下打開瀏覽器前端頁(yè)面向后端發(fā)起請(qǐng)求使用的是axios,無論是原生的axios還是自己封裝的axios都看成是axios。發(fā)起請(qǐng)求之后后端去數(shù)據(jù)庫(kù)里面拿數(shù)據(jù),然后返回給前端。 發(fā)起請(qǐng)求的地方是axios,并且你能夠封裝這個(gè)axios,那么你就可以添加攔截器。 請(qǐng)求攔截器就是你在

    2024年02月04日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包