vue 呼叫c vue元件間的通訊(7種)

2021-10-13 21:22:54 字數 2601 閱讀 6713

1.props和$emit

父元件向子元件傳遞資料是通過prop傳遞的,子元件傳遞資料給父元件是通過$emit觸發事件來做到的.

//子元件child

vue.component('child',

},template:`

`,props:['message'],//設定props屬性值,得到父元件傳遞過來的資料

methods:}})

//父元件parent

vue.component('parent',

},methods:}})

總結:1).父元件傳遞了message資料給子元件,並且通過v-on繫結了乙個getchilddata事件來監聽子元件的觸發事件;

2).子元件通過props得到相關的message資料,最後通過this.$emit觸發了getchilddata事件

2.$attrs和$listeners

第一種方式用來處理父子元件之間的資料傳,而如果父元件a下面有子元件b,元件b下面有元件c,這時如果元件a想傳遞資料給元件c怎麼辦呢? 如果採用第一種方法,我們必須讓元件a通過prop傳遞訊息給元件b,元件b在通過prop傳遞訊息給元件c;要是元件a和元件c之間有更多的元件,那採用這種方式就很複雜了。vue 2.4開始提供了$attrs和$listeners來解決這個問題,能夠讓元件a之間傳遞訊息給元件c。

vue.component('c',}})

vue.component('b',

},template:`

`,props:['message'],//得到父元件傳遞過來的資料

methods:}})

vue.component('a',

},methods:,

//執行c子元件觸發的事件

getcdata(val)}})

3. **事件匯流排($emit/$on

vue.component('brother1',

},template:`

this is brother1 compoent!

`,methods:}})

vue.component('brother2',}

`,data()

},mounted())}})

//**事件匯流排

var bus=new vue();

template:``})

4. provide和inject在 vue.js 的2.2.0+版本中新增加了 provide 和 inject 選項。他們成對出現,用於父級元件向下傳遞資料。

父元件中通過provider來提供變數,然後在子元件中通過inject來注入變數。不論子元件有多深,只要呼叫了inject那麼就可以注入provider中的資料。而不是侷限於只能從當前父元件的prop屬性來獲取資料,只要在父元件的生命週期內,子元件都可以呼叫。

vue.component('child',

},template:`

})vue.component('parent',,

data()}})

5. v-model父元件通過v-model傳遞值給子元件時,會自動傳遞乙個value的prop屬性,在子元件中通過this.$emit(『input',val)自動修改v-model繫結的值

vue.component('child',,

data()

},methods:

},template:`

})vue.component('parent',}

`,data()}})

template:``})

6. $parent和$children在元件內部可以直接通過子元件$parent對父元件進行操作,父元件也可以通過$children對子元件進行操作.

vue.component('child',,

data()

},methods:

},template:`

})vue.component('parent',

},data()}})

template:``})

7. vuex處理元件之間的資料互動

vuex 實現了乙個單向資料流,在全域性擁有乙個 state 存放資料,當元件要更改 state 中的資料時,必須通過 mutation 進行,mutation 同時提供了訂閱者模式供外部外掛程式呼叫獲取 state 資料的更新。而當所有非同步操作(常見於呼叫後端介面非同步獲取更新資料)或批量的同步操作需要走 action,但 action 也是無法直接修改 state 的,還是需要通過 mutation 來修改 state 的資料。最後,根據 state 的變化,渲染到檢視上。

vue元件間通訊

1 父元件向子元件傳遞資料,只需要props就行。設定資料並繫結到元件上。子元件用props接收,就能在元件內部使用獲取到的資料 反向通訊則需要在父級元件上自定義對應的方法,子元件使用 emit呼叫父元件方法,並上傳資料 content date content.vue date.vue 上面這個例...

vue元件間通訊

參考文章 vue父子元件間通訊可以用prop完成,跨級通訊則要用attrs來實現。1.attrs實現跨級通訊 父親元件 father元件 p msg1 p msg1 msg1 msg2 msg2 msg3 msg3 msg4 msg4 title 乙個標題 son1 div template imp...

vue元件間通訊

a元件要傳遞資料給b元件 a元件是有資料的,b元件是需要資料的 vue的各個元件data是不共享的,但是我們有時需要傳遞資料,那麼就可以使用vuex的store,store是乙個物件,裡面有個state,用來儲存多個元件需要使用的資料 我們先定義資料 在store的state中,定義資料 然後 在s...