免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      「 VUE3 + TS + Vite 」父子組件間如何通信?

      組件之間傳值,大家都很熟悉,涉及到 VUE3 +TS 好多同學(xué)就無(wú)從下手了,所以分享這篇文章,希望看完后提起 VUE3+TS 能夠不慌不忙。

      平時(shí)使用的函數(shù)如:ref、reactive、watch、computed 等需要先引入才能使用,但是本篇文章介紹的 defineProps、withDefaults、defineEmits、defineExpose 都是開箱即用的函數(shù),無(wú)需引入。

      父向子傳值:defineProps

      在父組件內(nèi)給子組件傳值時(shí),通過 v-bind 綁定一個(gè)數(shù)據(jù),然后子組件使用 defineProps 接收數(shù)據(jù)。

      可以傳遞的數(shù)據(jù)有兩種:字符串類型 和 非字符串類型。字符串類型不需要 v-bind,非字符串需要使用 v-bind,可以簡(jiǎn)寫成冒號(hào)(:)。

      /* 父組件代碼 */ 父組件

      子組件接收的時(shí)候使用 defineProps,需要注意的是我們使用 TS 需要加類型限制,如果不是 TS 的可以直接使用。

      TS 語(yǔ)法使用:

      defineProps()

      非 TS 語(yǔ)法使用:

      defineProps({title: { default: “”, type: string }, list: Array})

      對(duì)應(yīng)上邊父組件傳值,使用 TS 語(yǔ)法接收的子組件代碼為:

      子組件 {{ title }} {{ list }}

      默認(rèn)值:withDefaults

      在非 TS 語(yǔ)法中,default 可以設(shè)置默認(rèn)值,在 TS 語(yǔ)法中,如何設(shè)置默認(rèn)值呢?

      withDefaults 是一個(gè)無(wú)需引入開箱即用的函數(shù),可以接收兩個(gè)參數(shù),第一個(gè)用于defineProps 接收參數(shù),第二個(gè)參數(shù)是一個(gè)對(duì)象用于設(shè)置默認(rèn)值。

      使用方式1:分離模式

      type Props = {title?: string; list?: number[]}withDefaults(defineProps(), {title: “默認(rèn)值”, list: () => [1, 2]})

      使用方式2:組合模式

      widthDefault(defineProps(), {title: “默認(rèn)值”, list: () => [1, 2]})

      給上邊的子組件添加默認(rèn)值代碼如下:

      子組件 {{ title }} {{ list }}

      將父組件中傳的值刪除掉之后,發(fā)現(xiàn)設(shè)置的默認(rèn)值就展示出來(lái)了。

      子向父?jìng)髦担篸efineEmits

      子組件給父組件進(jìn)行傳值時(shí),都是通過派發(fā)事件,去觸發(fā)父組件中的事件并接收值。

      在子組件綁定一個(gè) @click 事件,然后通過 defineEmits 注冊(cè)自定義事件,當(dāng)點(diǎn)擊 @click 事件時(shí)觸發(fā) emit 去調(diào)用注冊(cè)事件,然后傳遞參數(shù)。

      非 TS 聲明語(yǔ)法

      // clickname 父組件自定義事件名let emit = defineEmits([ ‘clickname’ ])const postV = () => {emit(‘clickname’, ‘傳遞的值或變量’)}

      TS 聲明語(yǔ)法

      // clickname 父組件自定義事件名let emit = defineEmits()const postV = (str: string): void => {emit(‘clickname’, str)}

      如果是多個(gè)自定義事件,寫法如下:

      type Person = { name: string age: number}let emit = defineEmits()const postV = (str: string): void => {emit(‘clickname’, str)}const postVData = (per: Person): void => {emit(‘getData’, per)}

      我們?cè)谧咏M件內(nèi),使用 defineEmits 添加派發(fā)事件:

      子組件 子向父?jìng)髦? 子向父?jìng)鱠ata

      父組件內(nèi)使用自定義事件,接收子組件傳遞來(lái)的數(shù)據(jù):

      父組件

      defineExpose

      子組件向父組件傳值時(shí),除了使用 defineEmits 之后,也可以使用 defineExpose ,它是通過把組件自己的屬性暴露出去,父組件先獲取到子組件,再獲取屬性值。

      defineExpose 接收一個(gè)對(duì)象參數(shù),包含需要傳遞的屬性。

      defineExpose({name, count, ….})

      在子組件內(nèi),定義和暴露需要傳遞的屬性:

      子組件

      在父組件內(nèi)使用 ref 獲取到子組件,然后打印屬性:

      父組件 獲取子組件屬性

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      (0)
      用戶投稿
      上一篇 2022年7月18日 00:12
      下一篇 2022年7月18日 00:12

      相關(guān)推薦

      • 最新分紅公告 2022年7月30日最新公布股票分紅公告

        代碼 名稱 現(xiàn)金分紅比例 股息率% 股權(quán)登記日 除權(quán)除息日 最新公告日期 600673 東陽(yáng)光 10派2.7 2.34 – – 7月30日 688008 瀾…

        2022年8月4日
      • 花海獲常規(guī)賽MVP,數(shù)據(jù)傲視群雄,玄學(xué)預(yù)示eStar要奪冠

        KPL秋季賽常規(guī)賽的賽程已經(jīng)全部結(jié)束,季后賽的比賽也開始打響。前幾日聯(lián)盟公布了常規(guī)賽最佳選手(MVP)的四名候選人,他們分別是武漢eStarPro的花海和子陽(yáng)、重慶狼隊(duì)的今嶼以及廣…

        2022年6月29日
      • 線上和線下的區(qū)別(線上和線下是什么意思)

        當(dāng)越來(lái)越多人開始對(duì)線上線下大談感想的時(shí)候,你真的了解線上線下的真正含義嗎?很多人認(rèn)為,線上線下的界限僅為是否接入了互聯(lián)網(wǎng)。從表面上來(lái)看,線上線下的這個(gè)“線”好像指的就是互聯(lián)網(wǎng),而線…

        2022年11月2日
      • 《當(dāng)幸福來(lái)敲門》

        第一次推薦電影,就選這部吧,希望我的人生像這部電影的主人公一樣,雖然坎坷,但最終走向成功!如果此時(shí)的你有些狼狽,請(qǐng)一定看完它! 劇情介紹:克里斯·加德納(威爾·史密斯),生活在舊金…

        2022年7月6日
      • 具備物理層核心通信算法能力和大型SoC芯片設(shè)計(jì)能力

        創(chuàng)耀科技局端芯片已完成研發(fā),正在量產(chǎn)驗(yàn)證,全球市場(chǎng)空間約3億美元,公司或打破博通的全球壟斷地位;WiFiAP芯片支持更高的帶寬、更多的頻段和用戶數(shù)量,可實(shí)現(xiàn)通信速率更高。

        2022年6月18日
      • ?1.4 chkconfig 命令

        1.4 chkconfig 命令 chkconfig命令的功能強(qiáng)大,可以設(shè)置系統(tǒng)中所有服務(wù)在各個(gè)運(yùn)行級(jí)別中的啟動(dòng)狀態(tài),當(dāng)然也包括受xinetd服務(wù)管理的服務(wù)。 1.管理服務(wù)在運(yùn)行級(jí)…

        2022年6月21日
      • 1年740萬(wàn)!湖人得到鮑爾、卡魯索的犧牲品?那威少處理方式簡(jiǎn)單了

        本賽季,卡魯索場(chǎng)均可以得到7.4分3.6籃板4.0助攻1.7搶斷0.4封蓋,其中得分生涯以來(lái)第二高、其余四項(xiàng)均為生涯以來(lái)新高。 五項(xiàng)基礎(chǔ)數(shù)據(jù)四項(xiàng)創(chuàng)新高,顯然卡魯索打出了非常優(yōu)異的一…

        2022年7月24日
      • 輕薄高顏值,實(shí)力均衡的千元機(jī)榮耀X40 i評(píng)測(cè)

        對(duì)榮耀系列手機(jī)略有了解的朋友一定會(huì)知道,手機(jī)型號(hào)后面帶”i”的系列一般都主打低價(jià)位和均衡的性能,面向更多的普通用戶群體,就好比最近剛剛發(fā)布的榮耀X40i系列…

        2022年8月6日
      • 谷歌發(fā)布Lyra V2語(yǔ)音編解碼器 可在56kbps網(wǎng)速下語(yǔ)音聊天

        去年,谷歌宣布了用于低比特率的 Lyra 語(yǔ)音編解碼器,與開放的 AV1 編解碼器相結(jié)合,可以在 56kbps 的網(wǎng)速下實(shí)現(xiàn)語(yǔ)音聊天。Lyra 利用機(jī)器學(xué)習(xí)和其它技術(shù)進(jìn)行極低比特率…

        2022年10月3日
      • 你還在直接用 localStorage 么?該提升下了

        很多人在用 localStorage 或 sessionStorage 的時(shí)候喜歡直接用,明文存儲(chǔ),直接將信息暴露在;瀏覽器中,雖然一般場(chǎng)景下都能應(yīng)付得了且簡(jiǎn)單粗暴,但特殊需求情況…

        2022年7月26日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息