Vue父子組件傳值的三種方法
提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
前言
例如:Vue的學(xué)習(xí)是路阻且艱的,這是一個(gè)系列文章,幫助vue的新手可以快速上路,創(chuàng)建的自己的項(xiàng)目,該系列文章主要講解作者在vue學(xué)習(xí)之路上,創(chuàng)建項(xiàng)目中最重要的知識(shí),因?yàn)楣P者水平有限,希望大家多多指正,該系列文章旨在讓大家感受vue的便捷,詳細(xì)學(xué)習(xí)vue希望大家多多觀看官方文檔.
一、Vue父子傳值的方法
我們在Vue項(xiàng)目進(jìn)行父子傳值主要有以下三種方法:
(1) props / $emit
(2) $parent / children
(3) $ref
在觀看方法詳解時(shí)大家先創(chuàng)建一個(gè)父組件parent.vue和一個(gè)子組件child.vue并完成父子組件的注冊
二、方法詳解
1.props / $emit
?組件中通過定義props接收?組件中通過v-bind綁定的數(shù)據(jù)
父傳子
首先在父組件中定義一個(gè)示例data
import child from './child.vue'
export default {
name:'parent',
components:{
child
},
data(){
return{
parentdata:"This is the first word from parent"
}
}
}在父組件中使用子組件時(shí)用v-bind定義一個(gè)屬性并將父組件的parentdata傳入
<child :parentdata="parentdata"></child>
在子組件中使用props接收傳入的屬性,并可以直接使用
<template>
<div>
{{parentdata}}
</div>
</template>
<script>
export default {
name:"child",
props:{
parentdata:{
type:String,
default:""
}
}
}
</script>觀看結(jié)果:

父組件傳入子組件的值就被顯示出來了
子傳父
首先在子組件中定義一個(gè)事件,并且使用emit發(fā)送給父組件,在示例中子組件使用的click事件觸發(fā)發(fā)送自定義事件(sendmsg)
<template>
<div>
<button @click="childmsg">點(diǎn)我試試</button>
</div>
</template>
<script>
export default {
name:"child",
data(){
return{
msg:"This is the first word from child"
}
},
methods:{
childmsg(){
this.$emit('sendmsg',this.msg)
}
}
}
</script>emit使用方法
this.$emit(‘自定義事件名’,所需要傳的值)
在父組件中需要定義方法(getmsg)接受自定義事件(sendmsg):
<template>
<div>
<child :parentdata="parentdata" @sendmsg="getmsg"></child>
</div>
</template>
<script>
import child from './child.vue'
export default {
name:'parent',
components:{
child
},
methods:{
getmsg(val){
console.log(val)
}
}
}
</script>在定義方法時(shí)直接在函數(shù)中設(shè)置形參接受子組件傳入的值(getmsg(val))
在控制臺(tái)就可以看見打印結(jié)果This is the first word from child
2.$parent / children
在使用這個(gè)方法時(shí),大家可以先在父組件中打印出來$children,幫助大家理解
代碼如下
mounted(){
console.log(this.$children)
}可以看到,子組件被打印出來了

只要找到組件對(duì)象對(duì)應(yīng)的屬性,就可使用
mounted(){
alert(this.$children[0].msg)
}可以看到結(jié)果

注意,這種方法不僅可以調(diào)用數(shù)據(jù),也可以使用子組件的方法?。ǖ豢梢灾苯诱{(diào)用,這個(gè)接下來的文章再說)
如果是子組件使用父組件的數(shù)據(jù),可以同樣的流程
3.$ref
ref可以讓父組件更加便利地取到想要的子組件,其中原理和第二種方法相同,都是取到組件對(duì)象
在父組件中定義ref
<template>
<div>
<child ref="childselected"></child>
</div>
</template>在父組件中取值:
mounted(){
alert(this.$refs.childselected.msg)
}可以看到相同的結(jié)果:

總結(jié)
***本篇主要講解了Vue項(xiàng)目中父子組件傳值的三種方法:
props/$emit
子組件通過v-bind接收父組件的值
父組件通過接收emit發(fā)送的事件接收子組件的值
$parent/children
直接獲取組件對(duì)象來取值
$ref
定義屬性名獲取組件對(duì)象值
到此這篇關(guān)于Vue父子組件傳值的文章就介紹到這了,更多相關(guān)Vue父子組件傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-draggable實(shí)現(xiàn)pc端拖拽效果
這篇文章主要為大家詳細(xì)介紹了vue-draggable實(shí)現(xiàn)pc端拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
vue2+springsecurity權(quán)限系統(tǒng)的實(shí)現(xiàn)
本文主要介紹了vue2+springsecurity權(quán)限系統(tǒng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟)
這篇文章主要介紹了vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
vue項(xiàng)目中在可編輯div光標(biāo)位置插入內(nèi)容的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue項(xiàng)目中在可編輯div光標(biāo)位置插入內(nèi)容的實(shí)現(xiàn)代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Vite+TS+Vue開啟eslint和prettier規(guī)范及校驗(yàn)方式
這篇文章主要介紹了Vite+TS+Vue開啟eslint和prettier規(guī)范及校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

