av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

總結(jié)了Vue3的七種組件通信方式,別再說(shuō)不會(huì)組件通信了

寫(xiě)在前面

本篇文章將介紹如下七種組件通信方式:

  • props
  • emit
  • v-model
  • refs
  • provide/inject
  • eventBus
  • vuex/pinia(狀態(tài)管理工具)

開(kāi)始搞事情~

舉一個(gè)栗子

俗話說(shuō)的好,學(xué)習(xí)不寫(xiě)demo,那就是耍流氓~

本篇文章將圍繞下面這個(gè)demo,如下圖所示:

demo.gif

上圖中,_列表_和_輸入框_分別是父子組件,根據(jù)不同傳值方式,可能誰(shuí)是父組件誰(shuí)是子組件會(huì)有所調(diào)整。

Props方式

Props方式是Vue中最常見(jiàn)的一種父?jìng)髯拥囊环N方式,使用也比較簡(jiǎn)單。

根據(jù)上面的demo,我們將數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作定義在父組件,子組件僅做列表的一個(gè)渲染;

父組件代碼如下:



復(fù)制代碼

子組件只需要對(duì)父組件傳遞的值進(jìn)行渲染即可,代碼如下:



復(fù)制代碼

emit方式

emit方式也是Vue中最常見(jiàn)的組件通信方式,該方式用于子傳父;

根據(jù)上面的demo,我們將列表定義在父組件,子組件只需要傳遞添加的值即可。

子組件代碼如下:



復(fù)制代碼

在子組件中點(diǎn)擊【添加】按鈕后,emit一個(gè)自定義事件,并將添加的值作為參數(shù)傳遞。

父組件代碼如下:



復(fù)制代碼

在父組件中只需要監(jiān)聽(tīng)子組件自定義的事件,然后執(zhí)行對(duì)應(yīng)的添加操作。

v-model方式

v-model是Vue中一個(gè)比較出色的語(yǔ)法糖,就比如下面這段代碼


復(fù)制代碼

就是下面這段代碼的簡(jiǎn)寫(xiě)形勢(shì)


復(fù)制代碼

v-model確實(shí)簡(jiǎn)便了不少,現(xiàn)在我們就來(lái)看一下上面那個(gè)demo,如何用v-model實(shí)現(xiàn)。

子組件



復(fù)制代碼

在子組件中我們首先定義props和emits,然后添加完成之后emit指定事件。

注:update:*是Vue中的固定寫(xiě)法,*表示props中的某個(gè)屬性名。

父組件中使用就比較簡(jiǎn)單,代碼如下:



復(fù)制代碼

refs方式

在使用選項(xiàng)式API時(shí),我們可以通過(guò)this.$refs.name的方式獲取指定元素或者組件,但是組合式API中就無(wú)法使用哪種方式獲取。如果我們想要通過(guò)ref的方式獲取組件或者元素,需要定義一個(gè)同名的Ref對(duì)象,在組件掛載后就可以訪問(wèn)了。

示例代碼如下:



復(fù)制代碼

子組件代碼如下:



復(fù)制代碼

setup組件默認(rèn)是關(guān)閉的,也即通過(guò)模板ref獲取到的組件的公開(kāi)實(shí)例,不會(huì)暴露任何在**
復(fù)制代碼

子組件



復(fù)制代碼

值得注意的是使用provide進(jìn)行數(shù)據(jù)傳遞時(shí),盡量readonly進(jìn)行數(shù)據(jù)的包裝,避免子組件修改父級(jí)傳遞過(guò)去的數(shù)據(jù)。

事件總線

Vue3中移除了事件總線,但是可以借助于第三方工具來(lái)完成,Vue官方推薦mitt[2]或tiny-emitter[3];

在大多數(shù)情況下不推薦使用全局事件總線的方式來(lái)實(shí)現(xiàn)組件通信,雖然比較簡(jiǎn)單粗暴,但是長(zhǎng)久來(lái)說(shuō)維護(hù)事件總線是一個(gè)大難題,所以這里就不展開(kāi)講解了,具體可以閱讀具體工具的文檔

狀態(tài)管理工具

Vuex[4]和Pinia[5]是Vue3中的狀態(tài)管理工具,使用這兩個(gè)工具可以輕松實(shí)現(xiàn)組件通信,由于這兩個(gè)工具功能比較強(qiáng)大,這里就不做展示了,具體可以查閱文檔。

寫(xiě)在最后

最后,感謝您的閱讀。


網(wǎng)站標(biāo)題:總結(jié)了Vue3的七種組件通信方式,別再說(shuō)不會(huì)組件通信了
分享地址:http://uogjgqi.cn/article/cosicsd.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流