vue中組件的通信方式

在vue項目開發(fā)中,組件之間進行數(shù)據(jù)傳遞,是必不可少的,那么今天就來總結(jié)一下vue中組件通信的集中方式。

一、父子組件之間傳遞數(shù)據(jù)

父子組件之間的數(shù)據(jù)傳遞分為父傳子和子傳父。
父傳子:
1.props傳遞
在父組件調(diào)用子組件時傳遞一個prop

<child :title="title"></child>

對應(yīng)的在子組件去接收這個prop

export default {
  props: ['title']
}

一般來說,不推薦在子組件中修改prop的值,會導(dǎo)致數(shù)據(jù)流向混亂,如果要修改,請將這個值保存到data中
有些情況下,需要雙向綁定prop,請使用this.$emit('update:title', newTitle)觸發(fā)prop的更新,然后在父組件中去監(jiān)聽這個emit

<child :title="title" @update:title="title=$event"></child>
// 可以簡寫為
<child :title.sync="title"></child>

2.props傳遞數(shù)據(jù)十分方便,缺點在于有多層組件嵌套時,需要每一級都使用prop傳遞和接收,很是麻煩。vue2.4提供attrs和listeners解決這個問題。
attrs接收父級作用域所有非prop和非class,style傳遞的屬性,在內(nèi)部組件中通過v-bind="$attrs"
listeners屬性中包含了父作用域中b不含.native修飾符的所有v-on監(jiān)聽器,使用v-bind="$listeners"傳遞給內(nèi)部組件,這兩個屬性在創(chuàng)建高級組件時十分有用
3.provide和inect
父組件通過provide來提供變量,子組件通過inject注入變量
4.父組件通過v-model默認傳遞一個value的prop,在子組件中觸發(fā)一個emit('input', value)改變父組件的值
5.parent和$children

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容