vue組件傳值的實現(xiàn)方式小結(jié)【三種方式】
本文實例講述了vue組件傳值的實現(xiàn)方式。分享給大家供大家參考,具體如下:
前言
vue的組件傳值分為三種方式:父傳子、子傳父、非父子組件傳值
引用官網(wǎng)的一句話:父子組件的關(guān)系可以總結(jié)為 prop 向下傳遞,事件向上傳遞
父組件通過 prop 給子組件下發(fā)數(shù)據(jù),子組件通過事件給父組件發(fā)送消息,如下圖所示:

下面我們就開始用代碼(一言不合就上代碼)詳細的介紹vue組件傳值的三種方式
1、父傳子
子組件的代碼:
<template>
<div id="container">
{{msg}}
</div>
</template>
<script>
export default {
data() {
return {};
},
props:{
msg: String
}
};
</script>
<style scoped>
#container{
color: red;
margin-top: 50px;
}
</style>
父組件的代碼:
<template>
<div id="container">
<input type="text" v-model="text" @change="dataChange">
<Child :msg="text"></Child>
</div>
</template>
<script>
import Child from "@/components/Child";
export default {
data() {
return {
text: "父組件的值"
};
},
methods: {
dataChange(data){
this.msg = data
}
},
components: {
Child
}
};
</script>
<style scoped>
</style>
父傳子的實現(xiàn)方式就是通過props屬性,子組件通過props屬性接收從父組件傳過來的值,而父組件傳值的時候使用 v-bind 將子組件中預留的變量名綁定為data里面的數(shù)據(jù)即可
2、子傳父
子組件代碼:
<template>
<div id="container">
<input type="text" v-model="msg">
<button @click="setData">傳遞到父組件</button>
</div>
</template>
<script>
export default {
data() {
return {
msg: "傳遞給父組件的值"
};
},
methods: {
setData() {
this.$emit("getData", this.msg);
}
}
};
</script>
<style scoped>
#container {
color: red;
margin-top: 50px;
}
</style>
父組件代碼:
<template>
<div id="container">
<Child @getData="getData"></Child>
<p>{{msg}}</p>
</div>
</template>
<script>
import Child from "@/components/Child";
export default {
data() {
return {
msg: "父組件默認值"
};
},
methods: {
getData(data) {
this.msg = data;
}
},
components: {
Child
}
};
</script>
<style scoped>
</style>
子傳父的實現(xiàn)方式就是用了 this.$emit 來遍歷 getData 事件,首先用按鈕來觸發(fā) setData 事件,在 setData 中 用 this.$emit 來遍歷 getData 事件,最后返回 this.msg
總結(jié):
- 子組件中需要以某種方式例如點擊事件的方法來觸發(fā)一個自定義事件
- 將需要傳的值作為$emit的第二個參數(shù),該值將作為實參傳給響應自定義事件的方法
- 在父組件中注冊子組件并在子組件標簽上綁定對自定義事件的監(jiān)聽
3、非父子
vue 中沒有直接子對子傳參的方法,建議將需要傳遞數(shù)據(jù)的子組件,都合并為一個組件
如果一定需要子對子傳參,可以先從傳到父組件,再傳到子組件(相當于一個公共bus文件)
為了便于開發(fā),vue 推出了一個狀態(tài)管理工具 vuex,可以很方便實現(xiàn)組件之間的參數(shù)傳遞
希望本文所述對大家vue.js程序設計有所幫助。
相關(guān)文章
vue2.0 獲取從http接口中獲取數(shù)據(jù),組件開發(fā),路由配置方式
今天小編就為大家分享一篇vue2.0 獲取從http接口中獲取數(shù)據(jù),組件開發(fā),路由配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue簡易注冊頁面+發(fā)送驗證碼功能的實現(xiàn)示例
本文主要介紹了Vue簡易注冊頁面+發(fā)送驗證碼功能的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
vue截圖轉(zhuǎn)base64轉(zhuǎn)文件File異步獲取方式
這篇文章主要介紹了vue截圖轉(zhuǎn)base64轉(zhuǎn)文件File異步獲取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue3+Vite+TS實現(xiàn)二次封裝element-plus業(yè)務組件sfasga
這篇文章主要介紹了在Vue3+Vite+TS的基礎上實現(xiàn)二次封裝element-plus業(yè)務組件sfasga,下面文章也將圍繞實現(xiàn)二次封裝element-plus業(yè)務組件sfasga的相關(guān)介紹展開相關(guān)內(nèi)容,具有一定的參考價值,需要的小伙伴可惡意參考一下2021-12-12
vue-cli的index.html中使用環(huán)境變量方式
這篇文章主要介紹了vue-cli的index.html中使用環(huán)境變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
vue?props使用typescript自定義類型的方法實例
這篇文章主要給大家介紹了關(guān)于vue?props使用typescript自定義類型的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-01-01

