精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3.2 中新出的 Expose 是做啥用的?

開發 前端
如果你在開發一個開源的組件或庫,你有可能想保持一些內部方法的私有性。在Vue 3.2之前,這并不容易實現,因為所有在選項API中聲明的方法或數據等都是公開的,所以模板可以訪問它。

隨著Vue 3.2的發布,一個新的組合工具提供給我們,叫做 expose。

你是否曾經創建過一個需要向模板提供一些方法和屬性的組件,但又希望這些方法對組件是私有的,不能被父類調用?

如果你在開發一個開源的組件或庫,你有可能想保持一些內部方法的私有性。在Vue 3.2之前,這并不容易實現,因為所有在選項API中聲明的方法或數據等都是公開的,所以模板可以訪問它。

組合API也是如此。我們從setup方法中返回的所有東西都可以被父類直接訪問。

組合 API

讓我們看一個實際的例子。想象一下,我們有一個組件,它創建了一個計數器,每一秒都會更新這個計數器。

** MyCounter.vue**

<template>
<p>Counter: {{ counter }}</p>

<button @click="reset">Reset</button>
<button @click="terminate">??</button>
</template>

<script>
import { ref } from 'vue'

export default {
setup () {
const counter = ref(0)

const interval = setInterval(() => {
counter.value++
}, 1000)

const reset = () => {
counter.value = 0
}

const terminate = () => {
clearInterval(interval)
}

return {
counter,
reset,
terminate
}
}
}
</script>

從組合的角度來看,我希望父級組件能夠在需要時直接調用reset?方法--但我希望保持terminate? 函數和 counter 的引用只對組件可用。

如果我們把這個組件實例化到一個父類中,例如 App.vue,并給它附加一個 ref 引用,我們可以很容易地讓父類調用 reset? 方法,因為當我們從 setup? 中返回它時,它已經和 terminate 一起被暴露了。

App.vue

<template>
<MyCounter ref="counter" />

<button @click="reset">Reset from parent</button>
<button @click="terminate">Terminate from parent</button>
</template>

<script>
import MyCounter from '@/components/MyCounter.vue'

export default {
name: 'App',
components: {
MyCounter
},
methods: {
reset () {
this.$refs.counter.reset()
},
terminate () {
this.$refs.counter.terminate()
}
}
}
</script>

如果現在運行這個,并單擊重置或終止按鈕,兩者都可以工作。

讓我們明確說明我們要向父類暴露(expose?)的內容,以便只有 reset 函數可用。

** MyCounter.vue**

<script>
import { ref } from 'vue'

export default {
setup (props, context) {
const counter = ref(null)

const interval = setInterval(() => {
counter.value++
}, 1000)

const reset = () => {
counter.value = 0
}

const terminate = () => {
console.log(interval)
clearInterval(interval)
}

context.expose({ reset })

return {
counter,
reset,
terminate
}
}
}
</script>

這里,我們在setup?函數中加入了 props? 和 context? 參數。我們需要有可用的上下文,因為這是 expose? 函數的位置。我們也可以像這樣使用重構: { expose }。

接下來,我們使用 context.expose? 來聲明一個我們想要向實例化這個組件的父類公開的元素對象;在這個例子中,我們只打算讓 reset 功能可用。

如果我們再次運行這個例子,并點擊 "Terminate from parent" 按鈕,我們會得到一個錯誤。

Uncaught TypeError: this.$refs.counter.terminate is not a function

terminate 功能不再可用,我們的私有API現在也無法訪問了。

選項API

上面我們在 composition API? 使用 exponse,但在options API中也可以使用這個方法。我們可以把它改寫成如下。

//  MyCounter.vue


export default {
created () { ... },
data: () => ({ counter: null }),
methods: {
reset () { ... },
terminate () { ... }
},
expose: ['reset']
}

注意,我們添加了一個新的選項API屬性expose?,允許我們傳入一個數組,其中字符串'reset'是我們公開的函數的名稱。

組合API 渲染功能

創建一個強大臉靈活的組件的方法是利用渲染函數的力量。這對Vue 3來說并不新鮮,但是隨著composition API的建立,我們現在可以靈活地從setup?方法中直接返回組合API h 函數。

這就產生了一個問題,因為在我們的setup?函數中,整個return?語句只是包含組件正在創建的節點的 h 方法。

如果在這個時候我們選擇向父類 expose 一些東西,我們就會遇到與我們之前看到的相反的問題。沒有任何東西被暴露,因為除了DOM元素,沒有任何東西被返回。

讓我們重寫 MyCounter.vue 組件來使用這個方法。

<script>
// The template has been deleted
import { ref, h } from 'vue'

export default {
setup (props, context) {
const counter = ref(0)

const interval = setInterval(() => {
counter.value++
}, 1000)

const reset = () => {
counter.value = 0
}

const terminate = () => {
clearInterval(interval)
}

// context.expose({ reset })

return () => h('div', [
h('p', `Counter: ${counter.value}`),
h('button', { onClick: reset }, 'Reset'),
h('button', { onClick: terminate }, 'Terminate')
])
}
}
</script>

注意,我們在頂部從Vue導入了 h,因為我們需要用它來創建我們的DOM元素。

為了說明問題,暫時注釋了context.expose方法。

現在的 return 語句復制了我們之前的 <template> 的DOM結構,如果我們運行這個例子,我們能夠正確點擊元素上的重置和終止按鈕。

然而,如果我們現在點擊 "Reset from parent"按鈕,我們會遇到一個錯誤。

Uncaught TypeError: this.$refs.counter.reset is not a function

reset?方法不再被暴露,因為它沒有被setup?函數返回。為了解決這個問題,我們需要取消對context.expose的調用,使其再次可用。

總結

新的 expose 方法是非常直觀的,而且很容易在我們的組件中實現。它清除了一些非常重要的組成問題,這些問題在過去甚至需要重寫一個完整的組件,所以即使它不是你日常使用的API,它也是值得收藏在我們文件夾中吃灰。

作者:Marina Mosti  

譯者:前端小智  

來源:vuemastery  

原文:https://www.vuemastery.com/blog/undrstanding-vue-3-expose/

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2022-08-04 14:38:49

vue3.2setup代碼

2022-09-02 15:22:32

Vue3.2技術代碼

2022-08-17 12:09:29

Vue3.2代碼

2015-05-12 16:15:18

大數據數據類型

2023-03-31 08:41:55

Vue 應用V-once

2022-03-22 09:16:24

HTTPS數據安全網絡協議

2022-04-13 21:07:30

Vue 3函數重載

2024-01-04 08:49:03

Vuescope限制

2022-08-30 19:11:12

Docker虛擬化技術

2021-06-07 07:20:03

生態動態變量

2009-06-18 16:21:45

Hibernate更新Hibernate更新

2023-03-29 14:25:08

Vue.js前端框架

2021-12-17 17:50:50

RTORPO場景

2021-09-10 08:31:19

DubboSPI框架

2021-08-27 09:00:00

CDC數據庫技術

2025-10-29 07:33:13

2021-01-07 14:20:55

JavaGC

2019-07-24 15:33:55

大數據數據處理分析

2021-03-10 09:39:08

Vue插件SEO

2018-02-23 10:22:42

點贊
收藏

51CTO技術棧公眾號

91视频精品在这里| 国产字幕视频一区二区| 欧美日韩三级一区| 亚洲欧美一二三| 黄色a在线观看| 99久久99久久精品国产| www免费在线观看| av在线一区二区| 国产精品video| 日本在线一级片| 婷婷亚洲精品| 欧美片在线播放| 无码专区aaaaaa免费视频| 国产资源在线观看| 高清成人在线观看| 国产精品h在线观看| 中文字幕av久久爽av| 伊人久久大香线蕉无限次| 欧美二区三区的天堂| 免费看国产曰批40分钟| 九色porny丨首页在线| 91免费视频网址| 999热视频| 免费在线不卡av| 国产亚洲亚洲| 欧美精品日韩www.p站| 黄色aaa视频| 在线播放一区二区精品视频| 欧美亚洲高清一区二区三区不卡| 日韩伦理在线免费观看| 久cao在线| 国产精品色哟哟| 美女三级99| 丁香六月天婷婷| 激情深爱一区二区| 国产精品对白刺激| 久久久久久少妇| 激情婷婷欧美| 九九热这里只有在线精品视| 亚洲天堂精品一区| 亚洲综合福利| 亚洲精品美女在线| 极品白嫩的小少妇| 日韩精品一区二区三区免费视频| 欧美日韩成人综合天天影院| 久久久久狠狠高潮亚洲精品| 成入视频在线观看| 亚洲一区二区三区影院| 青草全福视在线| 欧美性天天影视| 国产午夜精品一区二区三区嫩草| 精品国产乱码一区二区三区四区| 北条麻妃一二三区| 国产伦精品一区二区三区免费| 国产男人精品视频| 中国精品一区二区| 免费成人美女在线观看| 国产精品麻豆va在线播放| 天堂网免费视频| 久久看片网站| 国产精品69久久| 日韩黄色片网站| 日本在线不卡一区| 国产美女被下药99| 国产精品国产三级国产普通话对白| 日本伊人精品一区二区三区观看方式| 国产国语刺激对白av不卡| 成人a v视频| 免费欧美日韩国产三级电影| 国产啪精品视频| 91丨九色丨蝌蚪丨对白| 国产一区不卡精品| 99蜜桃在线观看免费视频网站| 精品人妻av一区二区三区| 国产激情精品久久久第一区二区 | 久久天天狠狠| 免费播放片a高清在线观看| 久久久无码精品亚洲日韩按摩| 欧美精品二区三区四区免费看视频| 免费成人av电影| 国产精品护士白丝一区av| 最新不卡av| 超碰在线中文字幕| 欧美性猛交xxxx乱大交3| 亚洲五月天综合| japansex久久高清精品| 欧美精品一区二区三区在线| av在线网站观看| 99精品电影| 国精产品一区一区三区有限在线| 五月婷婷开心网| 美女网站视频久久| 国产精品一 二 三| 成年人在线观看| 夜夜操天天操亚洲| 男人舔女人下面高潮视频| 97久久中文字幕| 亚洲精品短视频| 黄色av片三级三级三级免费看| 欧美激情1区2区3区| 2019中文字幕免费视频| 91免费视频播放| 97精品视频在线观看自产线路二| 亚洲高清视频在线观看| 美女尤物在线视频| 欧美自拍偷拍一区| 岛国av免费观看| 99久久夜色精品国产亚洲96| 97福利一区二区| 91久久精品无码一区二区| av亚洲产国偷v产偷v自拍| 亚洲欧洲精品一区二区| aa级大片免费在线观看| 欧美日韩aaaaa| 色噜噜在线观看| 欧美日本中文| 国产欧美一区二区三区在线| 天天干天天草天天射| 成人免费在线播放视频| 日韩精品一区二区三区不卡| 澳门成人av| 日韩中文字幕视频在线观看| 波多野结衣视频网站| 国产福利精品一区二区| 一区二区精品国产| 自由日本语热亚洲人| 精品久久久久99| 小泽玛利亚一区二区免费| 日韩国产欧美在线视频| 九九九九九九精品| 丁香花高清在线观看完整版| 91精品国产入口| 超碰人人人人人人人| 老司机免费视频久久| 精品无码久久久久国产| 啦啦啦中文在线观看日本| 欧美丰满少妇xxxxx高潮对白| 久久成人激情视频| 久久久久久久波多野高潮日日| 国产另类自拍| 成人高潮aa毛片免费| 91精品国产综合久久精品性色| 林心如三级全黄裸体| 久久久999| 久久久久高清| 在线能看的av网址| 日韩精品福利在线| 在线观看中文字幕视频| 99精品欧美一区二区三区综合在线| 国产成人艳妇aa视频在线 | 日韩在线一卡二卡| 麻豆专区一区二区三区四区五区| 日韩精品国内| 成人不卡视频| 日韩中文字幕欧美| 国产强伦人妻毛片| 亚洲永久精品国产| 美女搡bbb又爽又猛又黄www| 雨宫琴音一区二区在线| 国产三区精品| 小视频免费在线观看| 亚洲乱码av中文一区二区| 亚洲毛片一区二区三区| 欧美国产欧美综合| 孩娇小videos精品| 91精品在线观看国产| 99porn视频在线| segui88久久综合| 精品一区二区三区四区| 亚洲av无码不卡| 国产精品久久久久久久久免费相片 | 精品一区二区日本| 黑人精品一区| 日日噜噜噜夜夜爽亚洲精品| 国产a级免费视频| 精品久久久久久久久久久久久| 草草影院第一页| 麻豆国产欧美一区二区三区| 蜜桃视频成人在线观看| 久久久伦理片| 国产欧美日韩精品丝袜高跟鞋| 成人在线观看亚洲| 日韩电影在线观看中文字幕 | 91精品国产品国语在线不卡| 国产亚洲成人av| 久久精品在线观看| 一级做a爱视频| 中文在线一区| 在线观看一区二区三区三州| 99精品国产一区二区三区2021| 2019精品视频| 日韩毛片久久久| 亚洲成人亚洲激情| 中文 欧美 日韩| 亚洲一级二级三级在线免费观看| 久久久亚洲av波多野结衣| 久久99蜜桃精品| 激情综合在线观看| 一区二区三区网站| 欧美日韩亚洲一区二区三区四区| 国产成年精品| 日本电影亚洲天堂| 在线黄色网页| 一区二区亚洲欧洲国产日韩| 亚洲av色香蕉一区二区三区| 日本黄色一区二区| 青娱乐在线视频免费观看| 久久久精品人体av艺术| 天堂va欧美va亚洲va老司机| 丝瓜av网站精品一区二区| 国产精品一色哟哟| 99欧美视频| 日韩av免费电影| 国产福利一区二区精品秒拍| 成人激情黄色网| 怡红院成人在线| 国语自产在线不卡| 1769免费视频在线观看| 中文国产成人精品| 欧美日韩国产综合视频| 精品国产乱码久久久久久浪潮| 在线播放精品视频| 日本精品视频一区二区三区| 国产成人精品a视频一区| 自拍偷拍亚洲欧美日韩| 五月婷婷婷婷婷| 国产视频在线观看一区二区三区| 特级西西人体4444xxxx| 福利一区福利二区| 性高潮久久久久久| 国产一区二区三区观看| 艹b视频在线观看| 蜜乳av一区二区三区| 成人黄色一区二区| 久久精品一区二区国产| 成人三级视频在线播放| 亚洲专区欧美专区| 国产美女无遮挡网站| 亚洲精选一区| 热99这里只有精品| 99精品欧美| 人人妻人人添人人爽欧美一区| 黄色日韩在线| 777av视频| 亚洲一区二区毛片| av黄色在线网站| 久久久久.com| av网站在线不卡| 蜜臀久久99精品久久久久宅男 | 亚洲伊人精品酒店| 国产欧美 在线欧美| 久久久成人av毛片免费观看| 国产精品91在线| 成人在线高清| 91精品视频免费| 国产中文欧美日韩在线| 亚洲自拍偷拍福利| 91欧美日韩在线| 国产主播一区二区三区四区| 色狠狠久久av综合| 欧美一区二区三区成人久久片| 国产一区2区| 杨幂一区欧美专区| 小小影院久久| 国产免费一区二区视频| 亚洲男女自偷自拍| 日本激情视频在线| 国产在线视频一区二区三区| 波多野吉衣在线视频| 91麻豆蜜桃一区二区三区| 欧美特级黄色录像| 中文字幕亚洲在| 日韩欧美中文字幕视频| 亚洲国产精品综合小说图片区| 天海翼一区二区| 在线观看亚洲一区| 91精东传媒理伦片在线观看| 精品国产免费人成电影在线观看四季 | 久久这里只有精品6| 欧美福利第一页| 亚洲免费观看高清在线观看| 日韩精品在线免费看| 91国偷自产一区二区开放时间| 91麻豆成人精品国产| 亚洲电影免费观看高清| 97在线观看免费观看高清| 欧美美女18p| 户外露出一区二区三区| 成人综合国产精品| 色婷婷久久久| 日韩video| 久久在线91| 亚洲综合伊人久久| 97成人超碰视| www.com.av| 精品久久久视频| 一区二区三区免费在线| 亚洲高清久久久久久| 色影院视频在线| 国产91精品久| 日本免费一区二区三区视频| 欧美日韩精品久久久免费观看| 亚洲一级毛片| 九九热免费精品视频| 成人免费黄色大片| 欧美激情视频二区| 午夜一区二区三区在线观看| 一起草av在线| 亚洲欧美日韩国产成人| bl视频在线免费观看| 成人在线播放av| 精品一区在线| 麻豆tv在线播放| 国产综合久久久久久鬼色| 日韩在线免费观看av| 五月天丁香久久| 性一交一乱一色一视频麻豆| 中文字幕亚洲一区| 伊人久久视频| 精品综合久久久| 欧美日韩一视频区二区| 精品亚洲视频在线| 国产免费成人在线视频| 成人免费区一区二区三区| 日韩亚洲欧美成人一区| 日本在线免费看| 国产精品久久久久久久久久久久| 三级小说欧洲区亚洲区| 国产九色porny| 国产精品羞羞答答xxdd| 免费三级在线观看| 欧美日韩精品三区| 第一福利在线| 国产精品都在这里| 精品久久国产| 午夜dv内射一区二区| 久久亚洲精品小早川怜子| 亚洲免费激情视频| 欧美精品一区二区高清在线观看| 亚洲资源一区| 91精品国自产在线观看| 欧美91精品| 亚洲妇女无套内射精| 一区二区高清在线| 韩国av永久免费| 97视频在线观看网址| 校园春色另类视频| 欧美 国产 日本| 国产日韩av一区| 制服丝袜在线一区| 久久久精品一区二区三区| 国产区一区二| 久久香蕉视频网站| 丁香啪啪综合成人亚洲小说| 国产成人精品av久久| 亚洲精品国产精品久久清纯直播| 牛牛精品一区二区| 欧美一区1区三区3区公司| 琪琪一区二区三区| 五月综合色婷婷| 日韩精品一区在线| 成年人黄色大片在线| 日韩国产在线一区| 极品美女销魂一区二区三区 | 日韩精品电影一区二区| 在线观看av一区二区| 91美女视频在线| 亚洲伊人久久综合| 在线日韩电影| jizz中文字幕| 欧美一区二区高清| www欧美xxxx| 日韩精品成人一区二区在线观看| 裸体一区二区三区| 久久久久久久久久久97| 日韩精品中文字幕在线观看| 国产精品99| 日产精品久久久久久久蜜臀| 91麻豆视频网站| 中文字幕精品无码亚| 久久99热这里只有精品国产| 亚洲另类春色校园小说| 午夜视频在线网站| 五月激情六月综合| 天堂аⅴ在线地址8| 国产乱子伦精品| 日本vs亚洲vs韩国一区三区二区| 麻豆视频在线免费看| 亚洲精品二三区| 日韩欧美三区| ww国产内射精品后入国产| 国产嫩草影院久久久久| 六月婷婷中文字幕| 国产一区二区色| 国产精品婷婷| 精品无码久久久久成人漫画 | 菠萝菠萝蜜在线观看| 乱一区二区三区在线播放| 精品亚洲porn| 亚洲国产精品无码久久久|