總結一下對vue組件通信的理解和使用。一、組件目錄結構
父組件:app.vue
子組件:page1.vue
子組件:page2.vue
父組件 app.vue子組件 page1.vue請輸入單價:
子組件 page2.vue單價:{{price}}
數量: {{count}}
二、通信過程介紹 1.父組件向子組件傳值 1.1在父組件中引入需要通信的子組件總金額:{{totalMoney}}元 剩余金額: {{balance}}元
import Page1 from "./components/page1";1.2 在父組件的components中注冊該子組件
components: { Page1 }1.3 在父組件的template中使用子組件
1.4 將需要傳遞給子組件的值通過v-bind(如果傳遞的是固定值,則不需要v-bind,直接屬性名,屬性值傳遞即可)。
1.5 在對應的子組件中,通過props屬性接收傳遞過來的值// 此處的price則是傳遞給子組件的值
props:{ price:{ type:String, default:"" } }1.6 在子組件中使用該值
2.子組件向父組件中傳值 2.1 在page1.vue中,通過觸發子組件的方法(這里是自定義的downPrice方法),單價:{{price}}
2.2 在子組件的methods的downPrice中,通過this.$emit(),將事件和參數傳遞給父組件單價:{{price}}
downPrice(count){ this.$emit("downPrice",count) } // downPrice 是傳遞給父組件的事件,父組件觸發并相應這個方法 // count 傳遞給父組件的參數,在父組件中,可以對和這個參數進行相應操作2.3 在父組件中接受子組件傳遞的事件downPrice和數據
2.4 父組件對接收到的事件和數據做出響應
downPrice(count) { this.price = (this.price - 1).toString(); // this.price = (this.price - count).toString(); }3、父組件調用子組件方法
方法一:
3.1 在使用子組件時,給子組件加一個ref引用3.2 父組件通過this.$refs即可找到該子組件,也可以操作子組件的方法
this.$refs.page1.子組件方法
打印出獲取到的子組件信息:
方法二:
3.3 通過$children,可以獲取到所有子組件的集合this.$children[0].某個方法4、子組件調用父組件方法 4.1 通過 $parent可以找到父組件,進而調用其方法
this.$parent.父組件方法
打印出的父組件信息
同級組件不能直接傳值,需要一個中間橋梁,可以先將數據傳遞給公共的父組件,然后父組件再將數據傳遞給需要的子組件。
5.1 定義一個公共文件 eventBus.js代碼很簡單(就2句),只是創建一個空的vue實例
import Vue from "vue" export default new Vue()5.2 在需要通信的同級組件中分別引入eventBus.js文件
import bus from "../eventBus.js"5.3 在page1.vue中,通過$emit將事件和參數傳遞給page2.vue
price(newPrice){ bus.$emit("priceChange",newPrice,this.count) }5.4 在page2.vue 中,通過$on接收接收參數和相應事件
bus.$on("priceChange", (price, count) => { this.balance = this.totalMoney - price * count; });
一般大型的項目,推薦使用Vuex來管理組件之間的通信
如果對道友你有幫助,請收藏和點贊,如果覺得有問題,歡迎留言指出,demo查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/51495.html
總結一下對vue組件通信的理解和使用。 一、組件目錄結構 父組件:app.vue 子組件:page1.vue 子組件:page2.vue 父組件 app.vue 請輸入單價: import Page1 from ./components/page1; import Page2 from ./components/page2; export de...
摘要:本身提供哪幾種通信方式首先靈感源于,支持雙向綁定,本質還是單向數據流。跟一樣,組件間最基本的數據流是通過向子組件傳遞數據。但是在卻很少使用,因為組件可以自定義事件,即后面的組件間通信方式其實就是訂閱發布模式。 例子是在 jsrun.net 平臺編寫,不支持移動端平臺,所以本文建議在 PC 端進行閱讀。 Vue 是數據驅動的視圖框架,那么組件間的數據通信是必然的事情,那么組件間如何進行數...
摘要:為此可以使用為子組件指定一個索引。訪問子組件當和一起使用時,是一個數組或對象,包含相應的子組件。 父子通信目前有四種方式: 1.父組件傳遞數據給子組件父組件數據如何傳遞給子組件呢?可以通過props屬性來實現父組件: //這里必須要用 - 代替駝峰data(){ return { msg: [1,2,3] };} 子組件通過props來接收數據:方式1:props: [childMs...
摘要:當一個組件沒有聲明任何時,這里會包含所有父作用域的綁定和除外,并且可以通過傳入內部組件在創建高級別的組件時非常有用。 寫在前面 組件間的通信是是實際開發中非常常用的一環,如何使用對項目整體設計、開發、規范都有很實際的的作用,我在項目開發中對此深有體會,總結下vue組件間通信的幾種方式,討論下各自的使用場景 文章對相關場景預覽 父->子組件間的數據傳遞 子->父組件間的數據傳遞 兄弟...
摘要:一父組件通過的方式向子組件傳遞數據,而通過子組件可以向父組件通信。而且只讀,不可被修改,所有修改都會失效并警告。 之前寫了一篇關于vue面試總結的文章, 有不少網友提出組件之間通信方式還有很多, 這篇文章便是專門總結組件之間通信的 vue是數據驅動視圖更新的框架, 所以對于vue來說組件間的數據通信非常重要,那么組件之間如何進行數據通信的呢?首先我們需要知道在vue中組件之間存在什么樣...
閱讀 1958·2021-11-22 15:33
閱讀 3001·2021-11-18 10:02
閱讀 2602·2021-11-08 13:16
閱讀 1617·2021-10-09 09:57
閱讀 1366·2021-09-30 09:47
閱讀 2000·2019-08-29 13:05
閱讀 3064·2019-08-29 12:46
閱讀 1004·2019-08-29 12:19