日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何用Vue實現父子組件通信

瀏覽:32日期:2022-09-30 09:11:56

如何用Vue實現父子組件通信

一、父子組件的關系構成

本篇文章將要總結的是Vue中父子組件之間的通信方式。

那在vue中父子組件之間的關系是怎么構成的呢,或者說哪個組件可以稱為是父組件,哪個組件又可以稱為是子組件呢。

在我的理解中,父子組件的關系構成也比較簡單。

使用vue-cli工具構建的項目中,我們經常會在一個組件中注冊引用另外一個組件。

Home.vue

<template> <div class='home'> <p>這里是Home組件</p> </div></template><script>export default { name: ’Home’}</script><style scoped> .home{border:1px solid #4488ff;display: inline-block;padding: 10px; }</style>

App.vue

<template> <div id='app'> <p>這里是app組件</p> <!-- stpe3:使用 --> <home></home> </div></template><script>// step1: 引入import Home from ’./components/Home’export default { name: ’App’, // step2: 注冊 components: { Home } }</script><style>#app { font-family: ’Avenir’, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #2c3e50; display: inline-block; border:1px solid orange; padding: 10px;}</style>

在上面兩個組件中,我們在App組件中引入、注冊并使用了Home組件。

那在vue中,我們就可以稱 App組件為父組件,Home組件為子組件,這兩個組件就構成了父子關系

這里一定要注意的是引入、注冊、使用這三步都不可缺少。

否則這兩個組件無法構成父子關系,也無法使用后面總結的幾種通信方式進行通信。

了解了vue中父子組件的構成關系后,接下來我將為大家介紹父子組件之前是如何進行通信。

二、props

vue中父子組件通信的第一種方式是通過props屬性,并且是父組件向子組件通信。

下面我們來實踐操作一下。

首先找到父組件中使用子組件的地方,為其添加上父組件需要傳遞給子組件的數據。

App.vue(省略部分未修改代碼)

<template> <div id='app'> <p>這里是app組件</p> <home date='2020/03/05 14:25'> </home> </div></template>

可以看到,這一步我們在使用子組件的地方添加了兩個需要傳遞給子組件的數據:title和date。

<home date='2020/03/05 14:25'></home>

下一步就是在子組件使用props接收這兩個參數。

Home.vue(省略部分未修改代碼)

<script>export default { name: ’Home’, props: [’title’,’date’]}</script>

最后一步,我們就可以在子組件中像使用vue data一樣使用title和date了。

Home.vue(省略部分未修改代碼)

<template> <div class='home'> <p>這里是Home組件</p> <p>title:{{title}}</p> <p>date:{{date}}</p> </div></template>

啟動項目后,瀏覽器查看效果。

如何用Vue實現父子組件通信

三、$emit

vue中父子組件通信的第二種方式是通過$emit方法,它是屬于子組件向父組件通信。

$emit方法是vue的一個實例方法,它的用法如下:

如何用Vue實現父子組件通信

其中第一個參數eventName稱為事件名稱。

事件名稱對應的事件是在父組件中通過v-on監聽的一個native DOM事件(可以理解是一個類似click這樣的自定義事件)。

當我們在子組件中執行$emit(eventName)時,就會觸發父組件中對應的event。

所以首先我們在子組件中使用$emit方法去編寫代碼(不傳遞第二個參數),觸發父組件中的event。

Home.vue

<template> <div class='home'> <p>這里是Home組件</p> <el-button type='primary' v-on:click=’btnClickHandler('Yes')’>Yes</el-button> <el-button type='primary' v-on:click=’btnClickHandler('No')’>No</el-button> </div></template><script>export default { name: ’Home’, methods: { btnClickHandler: function(param){if(param == 'Yes'){ this.$emit(’sayYes’);}else if(param == 'No'){ this.$emit(’sayNo’);} } }}</script>

可以看到,在Home子組件中存在兩個button。

當點擊[Yes] button時,會執行this.$emit(’sayYes’),觸發父組件中的sayYes事件。

當點擊[No] button時,會執行this.$emit(’sayNo’),觸發父組件中的sayNo事件。

接著我們在父組件中實現對應的native DOM事件。

App.vue

<template> <div id='app'> <p>這里是app組件</p> <homev-on:sayYes=’val='yes'’v-on:sayNo=’val='no'’> </home> <p>val: {{val}}</p> </div></template><script>import Home from ’./components/Home’export default { name: ’App’, data() { return { val: 'default', } }, components: { Home },}</script>

其中sayYes和、sayNo就是在父組件中定義的native DOM事件。

<homev-on:sayYes=’val='yes'’v-on:sayNo=’val='no'’></home>

val是父組件中定義的一個data數據,默認值為’default’。

那在結合子組件的代碼邏輯,我們知道會有如下的結果:

當點擊[Yes] button時,會執行this.$emit(’sayYes’),觸發父組件中的sayYes事件,在sayYes事件里會將vue data中的val值修改為yes。

當點擊[No] button時,會執行this.$emit(’sayNo’),觸發父組件中的sayNo事件,在sayNo事件里會將vue data中的val值修改為no。

瀏覽器中驗證一下我們的說法。

如何用Vue實現父子組件通信

四、$parent

$parent是vue的一個實例屬性,它表示的就是當前組件的父實例。

如何用Vue實現父子組件通信

假如父組件中有一個方法為sayYes,那么在子組件中就可以直接使用this.$parent.sayYes去調用父組件的方法。

App.vue

<template> <div id='app'> <p>這里是app組件</p> <home></home> <p>val: {{val}}</p> </div></template><script>import Home from ’./components/Home’export default { name: ’App’, data() { return { val: 'default', } }, components: { Home }, methods: { sayYes: function() { this.val = 'yes'; }, sayNo: function() { this.val = 'no'; } }}</script>

我們在父組件中定義了兩個method:sayYes和sayNo,邏輯分別是:將val的值改為yes;將val的值改為no。

接著就可以在子組件中使用this.$parent.sayYes和this.$parent.sayNo去調用父組件中對應的sayYes和sayNo方法了。

Home.vue

<template> <div class='home'> <p>這里是Home組件</p> <el-button type='primary' v-on:click=’btnClickHandler('Yes')’>Yes</el-button> <el-button type='primary' v-on:click=’btnClickHandler('No')’>No</el-button> </div></template><script>export default { name: ’Home’, methods: { btnClickHandler: function(param){if(param == 'Yes'){ this.$parent.sayYes();}else if(param == 'No'){ this.$parent.sayNo();} } }}</script>

子組件中btnClickHandler方法的代碼已經改為了this.$parent這種寫法。

那我們在看下結果。

如何用Vue實現父子組件通信

五、總結

到此,vue中父子組件的通信方式已經總結完畢了,分別總結了下面幾種方法:

第一種:父組件向子組件通信-props屬性

第二種:子組件向父組件通信-$emit方法

第三種:子組件向父組件通信-$parent屬性

以上就是如何用Vue實現父子組件通信的詳細內容,更多關于Vue父子組件通信的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕一区日韩精品| 亚洲手机视频| 国产精久久久| 午夜久久免费观看| 国产精品久久久久久久久久久久久久久 | 日本美女一区| 国产欧美高清视频在线| 免费日本视频一区| 伊人久久大香线蕉av超碰演员| 国产一区二区视频在线看| 蜜臀a∨国产成人精品| 精品亚洲成人| 亚洲综合激情在线| 亚洲1区在线| 日韩精品第一| 国产精品色婷婷在线观看| 欧美日韩亚洲一区| 国产精品一国产精品k频道56| 国产精品.xx视频.xxtv| 国产劲爆久久| 肉色欧美久久久久久久免费看| 神马午夜久久| 黑丝一区二区| 综合一区二区三区| 日韩影片在线观看| 国产欧美自拍一区| 老鸭窝一区二区久久精品| 日韩欧美精品| 久久午夜影视| 男人操女人的视频在线观看欧美| 日韩av中文字幕一区二区三区| 欧美三级精品| 91精品国产91久久久久久黑人| 国精品产品一区| 97精品在线| 成人va天堂| 视频一区二区不卡| 日韩精品第一| 久久丁香四色| 久久这里只有精品一区二区| 国产高清不卡| 美女网站一区| 欧美日韩18| 日韩一区二区三区精品| 中文字幕免费精品| 日本不卡一区二区三区| 国产日韩欧美一区二区三区| 午夜影院欧美| 国产欧美亚洲精品a| 成人在线丰满少妇av| 国产一区二区三区四区二区| 给我免费播放日韩视频| 久久精选视频| 婷婷精品在线| 99视频在线精品国自产拍免费观看| 尤物在线精品| 日本一区二区三区中文字幕| 国产午夜久久| 欧美日一区二区三区在线观看国产免| 麻豆精品视频在线观看免费| 日韩在线观看一区| 色婷婷成人网| 日韩欧美三级| 91综合久久爱com| 久久精品亚洲人成影院| 蜜桃一区二区三区在线| 老司机精品视频网| 综合国产精品| 久久精品国产www456c0m| 亚洲ab电影| 久久网站免费观看| 国产一级成人av| 91日韩欧美| 中文字幕免费一区二区| 麻豆一区二区在线| 一区免费视频| 国产伦久视频在线观看| 欧美日韩夜夜| 亚洲日本欧美| 神马久久午夜| 精品久久97| 伊人久久亚洲| 噜噜噜躁狠狠躁狠狠精品视频 | 久久99蜜桃| 美腿丝袜亚洲一区| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 久久中文字幕一区二区| 日韩不卡一区二区| 999国产精品| 91日韩欧美| 激情视频网站在线播放色| 国产精品v一区二区三区| 亚洲91网站| 亚洲精品高潮| 欧美日韩一区二区高清| 日韩激情中文字幕| 国产欧美三级| 麻豆精品蜜桃| 一区二区三区四区在线观看国产日韩| 精品九九在线| 国产精品美女午夜爽爽| 视频一区二区三区入口| 久久精品不卡| 国产精品国产一区| 日韩视频不卡| 精品久久一区| 国产精品v日韩精品v欧美精品网站| 免费视频亚洲| 日韩高清欧美| 日韩国产综合| 美女在线视频一区| 97久久超碰| 欧美在线亚洲| 亚洲婷婷在线| 久久成人高清| 日韩高清中文字幕一区| 在线看片日韩| 亚洲精品少妇| 久久av一区| 黑丝一区二区三区| 亚洲欧美日韩国产| 中文字幕中文字幕精品| 丝瓜av网站精品一区二区| 国产一区日韩一区| 不卡福利视频| 91精品国产调教在线观看| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲精品中文字幕乱码| 欧美日韩激情| 欧美日韩国产综合网| 亚洲婷婷丁香| 久久免费视频66| 精品一区二区三区中文字幕视频| 精品久久中文| 1024精品久久久久久久久| 亚洲激情久久| 蜜桃伊人久久| 你懂的国产精品| 久久久久久久久99精品大| 亚洲精品中文字幕乱码| 日韩精品视频在线看| 久久av导航| 日韩精品一级二级| 日韩精品亚洲专区| 精品国产欧美日韩一区二区三区| 成人影视亚洲图片在线| sm久久捆绑调教精品一区| 99视频精品视频高清免费| 中文精品电影| 国产aⅴ精品一区二区三区久久| 波多野结衣久久精品| 91精品福利| 国产调教一区二区三区| 91精品综合| 精品一级视频| 国产日韩欧美一区二区三区 | 久久人人88| 日本午夜精品一区二区三区电影| 精品网站999| 蜜臀av性久久久久蜜臀aⅴ四虎| 国内自拍视频一区二区三区| 免费一级欧美片在线观看网站| 激情婷婷欧美| 综合一区二区三区| 亚洲欧美日韩国产一区二区| а√在线中文在线新版| 亚洲在线一区| 久久国产日本精品| 久久不卡日韩美女| 日韩国产精品久久久久久亚洲| 日韩欧美精品综合| 18国产精品| 日韩有吗在线观看| 亚洲一区二区日韩| 欧美午夜不卡| 欧美日韩一二三四| 亚洲爱爱视频| 欧美精品激情| 国产一区二区三区四区大秀 | 综合欧美亚洲| 免费看黄色91| 婷婷激情图片久久| 久久精品高清| 久久免费大视频| 欧美日韩一二三四| 天堂8中文在线最新版在线| 久久精品资源| 国产精品调教| 你懂的亚洲视频| 国产高清亚洲| 三上亚洲一区二区| 久久久久中文| 久久国产高清| 欧美片网站免费| 成人精品动漫一区二区三区| 麻豆精品av| 日本久久一区| 成人精品久久| 亚洲精品99| 久久精品电影|