Vue子級如何向父級傳遞數(shù)據(jù)(自定義事件)
前言
在上一篇文章中,說到了父級向子級組件中傳遞對應(yīng)的數(shù)據(jù)信息,以及增加傳遞數(shù)據(jù)的類型現(xiàn)在、默認值填充等規(guī)則。
但使用props只能是單向的數(shù)據(jù)傳遞,也就是由外層父級向內(nèi)層子級傳遞,并不能反向進行數(shù)據(jù)傳遞。
如何實現(xiàn)子級組件向父級組件傳遞數(shù)據(jù)呢?
子級向父級傳遞數(shù)據(jù)實現(xiàn)
在vue的官網(wǎng)中,給定一個方式實現(xiàn),即子級組件中使用this.$emit("自定義方法名",參數(shù))的方式,向父級中進行數(shù)據(jù)傳遞。
測試流程如下:
- 1、子級組件中定義動態(tài)數(shù)據(jù),定義按鈕與按鈕的點擊事件。
- 2、子級中的方法具體實現(xiàn),使用
this.$emit("自定義方法名",參數(shù))注冊新的事件,并傳遞數(shù)據(jù)值。 - 3、父級組件中,引用自己組件,并使用
@自定義方法名監(jiān)聽子級自定義事件。 - 4、父級組件中指定具體的邏輯方法,處理數(shù)據(jù)并顯示。
代碼如下所示:
- 子級組件中定義動態(tài)數(shù)據(jù),定義按鈕與按鈕的點擊事件。
- 創(chuàng)建自定義事件,并傳遞數(shù)據(jù)信息。
ChildComponentEvent.vue
<template>
<div class="contChild">
<h1>子級組件</h1>
<button @click="transToFatherMsg">點擊向父級組件傳值</button>
</div>
</template>
<script>
export default{
data(){
return{
message:"子級組件--》專注寫bug 愛吃香蕉"
}
},
methods:{
transToFatherMsg(){
console.log("子級組件中的點擊事件");
/**
* 自定義事件
* 參數(shù)一:自定義事件名稱
* 參數(shù)二:自定義事件傳參
*/
this.$emit("childEvent",this.message);
}
}
}
</script>
<style scoped>
.contChild{
border: 1px blue solid;
}
</style>父級引用子級組件,并針對自定事件回傳值做處理。
- ParentComponentEvent.vue
<template>
<div class="cont">
<h1>父級組件</h1>
<p>收到子級組件數(shù)據(jù):{{ getMsg }}</p>
<!-- 引入子級組件,并申明監(jiān)聽方法 @子級組件注冊自定義方法名 -->
<ChildComponentEvent @childEvent="getChildMsg"/>
</div>
</template>
<script>
// 引入子級組件
import ChildComponentEvent from './ChildComponentEvent.vue';
export default{
data(){
return{
getMsg:""
}
},
components:{ // 注冊子級組件
ChildComponentEvent
},
methods:{
getChildMsg(data){ // 子級自定義方法觸發(fā)后的具體執(zhí)行邏輯
console.log("父級接收子級組件數(shù)據(jù)傳遞");
// 賦值
this.getMsg = data;
}
}
}
</script>
<style scoped>
.cont{
border: 1px red solid;
}
</style>瀏覽器效果展示
剛進頁面,剛渲染成功時。

點擊按鈕后。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue.set()動態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法
今天小編就為大家分享一篇Vue.set()動態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法
這篇文章主要給大家介紹了關(guān)于vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法,Vue3是目前前端開發(fā)中非常流行的框架之一,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06

