国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

vue切換菜單取消未完成接口請(qǐng)求的案例

瀏覽:60日期:2022-10-29 15:43:57

在做別的功能時(shí) console里面總會(huì)報(bào)別的菜單接口里的錯(cuò) 看的很心煩 于是想優(yōu)化一下 就有了這篇文章 在切換菜單的時(shí)候取消所有未完成接口的請(qǐng)求

1.找到自己的請(qǐng)求攔截器 重點(diǎn)是 config.cancelToken = global.store.source.token;

http.interceptors.request.use(config => { config.cancelToken = global.store.source.token; return config}, err => { return Promise.reject(err)})

2.找到自己全局文件夾我的是global.js

global.store = { source: { token: null, cancel: null }}

3.路由

router.beforeEach((to, from, next) => { // ...此處其他代碼省略 // 切換路由時(shí)清空上個(gè)路由未完成的所有請(qǐng)求 const CancelToken = axios.CancelToken global.store.source.cancel && global.store.source.cancel() global.store.source = CancelToken.source() next()})

補(bǔ)充知識(shí):父組件如何獲取子組件數(shù)據(jù),子組件如何獲取父組件數(shù)據(jù),父子組件如何傳值

1、父組件如何主動(dòng)獲取子組件的數(shù)據(jù)

方案1:$children

$children用來訪問子組件實(shí)例,要知道一個(gè)組件的子組件可能是不唯一的,所以它的返回值是個(gè)數(shù)組

定義Header、HelloWorld兩個(gè)組件

<template> <div class='index'> <Header></Header> <HelloWorld :message='message'></HelloWorld> <button @click='goPro'>跳轉(zhuǎn)</button> </div></template>mounted(){ console.log(this.$children)}

打印的是個(gè)數(shù)組,可以用foreach分別得到所需要的數(shù)據(jù)

缺點(diǎn):

無法確定子組件的順序,也不是響應(yīng)式的

方案2: $refs

<HelloWorld ref='hello' :message='message'></HelloWorld>

調(diào)用hellworld子組件的時(shí)候直接定義一個(gè)ref,這樣就可以通過this.$refs獲取所需要的數(shù)據(jù)。

this.$refs.hello.屬性

this.$refs.hello.方法

2.子組件如何主動(dòng)獲取父組件中的數(shù)據(jù)

通過$parent

parent用來訪問父組件實(shí)例,通常父組件都是唯一確定的,跟children類似

this.$parent.屬性

this.$parent.方法

父子組件通信除了以上三種,還有props和emit。此外還有inheritAttrs和attrs

3.inheritAttrs

這是2。4新增的屬性和接口。inheritAttrs屬性控制子組件html屬性上是否顯示父組件提供的屬性。

如果我們將父組件Index中的屬性desc、ketsword、message三個(gè)數(shù)據(jù)傳遞到子組件HelloWorld中的話,如下

父組件Index部分

<HelloWorld ref='hello' :desc='desc' :keysword='keysword' :message='message'></HelloWorld>

子組件:HelloWorld,props中只接受了message

props:{ message: String }

實(shí)際情況,我們只需要message,那其他兩個(gè)屬性則會(huì)被當(dāng)作普通的html元素插在子組件的根元素上

vue切換菜單取消未完成接口請(qǐng)求的案例

這樣做會(huì)使組件預(yù)期功能變得模糊不清,這個(gè)時(shí)候,在子組件中寫入,inheritAttrs:false,這些沒用到的屬性便會(huì)被去掉,true的話,就會(huì)顯示。

props:{ message: String },inheritAttrs:false

如果父組件沒被需要的屬性,跟子組件本來的屬性沖突的時(shí)候

<HelloWorld ref='hello' type='text' :message='message'></HelloWorld>

子組件:helloworld

<template> <input type='number'></template>

這個(gè)時(shí)候父組件中type='text',而子組件中type='number',而實(shí)際中最后顯示的是type='text',這并不是我們想要的,所以只要設(shè)置inheritAttrs:false,type便會(huì)成為number。

那么上述這些沒被用到的屬性,如何被獲取。這就用到了$attrs

3.$attrs

作用:可以獲取到?jīng)]有使用的注冊(cè)屬性,如果需要,我們?cè)谶@也可以往下繼續(xù)傳遞。

就上述沒有用到的desc和keysword就能通過$attrs獲取到

通過$attr的這個(gè)特性可以父組件傳遞到子組件,免除父組件傳遞到子組件,再從子組件傳遞到孫組建的麻煩

父組件Index部分

<div class='index'> <HelloWorld ref='hello' :desc='desc' :keysword='keysword' :message='message'></HelloWorld></div>

子組件helloworld部分

<div class='hello'> <sunzi v-bind='$attrs'></sunzi> <button @click='aa'>獲取父組件的數(shù)據(jù)</button></div>

孫組建

<template> <div class='header'> {{$attrs}} <br> </div></template>

可以看出通過v-bind='$attrs'將數(shù)組傳到孫組建中

除了以上,provide/inject也適用于隔代組件通信,尤其是獲取祖先組建的數(shù)據(jù),非常方便

provide 選項(xiàng)應(yīng)該是一個(gè)對(duì)象或返回一個(gè)對(duì)象的函數(shù)

provide:{ for:’demo’ }inject:[’for’]

以上這篇vue切換菜單取消未完成接口請(qǐng)求的案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 乐安县| 克东县| 北碚区| 荆门市| 绿春县| 千阳县| 平湖市| 合川市| 苏尼特左旗| 开平市| 淮南市| 平原县| 石家庄市| 台江县| 莆田市| 韩城市| 威宁| 通许县| 泸州市| 南华县| 淮安市| 隆子县| 津南区| 庄河市| 彰化市| 平泉县| 无为县| 香河县| 隆德县| 富平县| 加查县| 青岛市| 新昌县| 宁陕县| 浠水县| 乡宁县| 普宁市| 永宁县| 南开区| 木兰县| 万山特区|