vue父子组件及非父子组件之间的传值
一、父組件向子組件傳值
在vue中通常使用props向子組件傳遞數(shù)據(jù)
1.創(chuàng)建子組件,在src/components/文件夾下新建一個(gè)Child.vue
2.Child.vue的中創(chuàng)建props,然后創(chuàng)建一個(gè)名為message的屬性
3.在App.vue中注冊(cè)Child組件,并在template中加入child標(biāo)簽,標(biāo)簽中添加message屬性并賦值
4.保存修改的文件,查看瀏覽器
5.我們依然可以對(duì)message的值進(jìn)行v-bind動(dòng)態(tài)綁定
此時(shí)瀏覽器中
父組件向子組件傳值成功
總結(jié)一下:
1.子組件在props中創(chuàng)建一個(gè)屬性,用以接收父組件傳過(guò)來(lái)的值
2.父組件中注冊(cè)子組件
3.在子組件標(biāo)簽中添加子組件props中創(chuàng)建的屬性
4.把需要傳給子組件的值賦給該屬性
二、子組件向父組件傳值
1.在子組件中創(chuàng)建一個(gè)按鈕,給按鈕綁定一個(gè)點(diǎn)擊事件
2.在響應(yīng)該點(diǎn)擊事件的函數(shù)中使用$emit來(lái)觸發(fā)一個(gè)自定義事件,并傳遞一個(gè)參數(shù)
3.在父組件中的子標(biāo)簽中監(jiān)聽(tīng)該自定義事件并添加一個(gè)響應(yīng)該事件的處理方法
4.保存修改的文件,在瀏覽器中點(diǎn)擊按鈕
子組件向父組件傳值成功
總結(jié)一下:
1.子組件中需要以某種方式例如點(diǎn)擊事件的方法來(lái)觸發(fā)一個(gè)自定義事件
2.將需要傳的值作為$emit的第二個(gè)參數(shù),該值將作為實(shí)參傳給響應(yīng)自定義事件的方法
3.在父組件中注冊(cè)子組件并在子組件標(biāo)簽上綁定對(duì)自定義事件的監(jiān)聽(tīng)
4.在通信中,無(wú)論是子組件向父組件傳值還是父組件向子組件傳值,他們都有一個(gè)共同點(diǎn)就是有中間介質(zhì),子向父的介質(zhì)是自定義事件,父向子的介質(zhì)是props中的屬性。抓準(zhǔn)這兩點(diǎn)對(duì)于父子通信就好理解了
三、非父子組件之間的傳值
1.公共實(shí)例文件bus.js,作為公共數(shù)控中央總線
2.第一個(gè)組件 first.vue
import Bus from '../bus.js'; export default {name: 'first',data () {return {value: '我來(lái)自first.vue組件!'}},methods:{add(){// 定義add方法,并將msg通過(guò)txt傳給second組件Bus.$emit('txt',this.value);}} }3.第二個(gè)組件second.vue
import Bus from '../bus.js'; export default {name: 'second',data () {return {}},mounted:function(){Bus.$on('txt',function(val){//監(jiān)聽(tīng)first組件的txt事件console.log(val);});} }這樣,就可以在第二個(gè)非父子關(guān)系的組件中,通過(guò)第三者bus.js來(lái)獲取到第一個(gè)組件的value
總結(jié)
以上是生活随笔為你收集整理的vue父子组件及非父子组件之间的传值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单日历的代码实现
- 下一篇: Vue2,Webpack的基础配置以及使