摘要:的單向數據傳遞直接作為一個本地變量下面是我的子組件這是父組件給我傳的數據運行結果如下圖子組件向父組件傳遞數據基本使用子組件向父組件傳遞數據,不能像上面一樣實時的傳遞數據,必須通過事件觸發。
組件是Vue核心功能之一,合理的組件化,可以減少我們代碼的冗余,提高項目的可維護性。下面,我將由淺入深的講Vue的組件
在講之前,首先我們先了解一下組件的命名。
HTML是對特征名不敏感的語言,他會將所有的字符全部轉換成小寫。我們命名了一個組件的名稱為 nameTest ,然后再其他組件里面引用
Parent.vue
parent:下面是我的子組件
Childs.vue
child:這是父組件給我傳的數據——{{userName}}
我們在 Parent.vue 組件里面引用子組件 Childs.vue 然后傳入 userName 參數給子組件,Childs 在props里面接收父組件傳傳來的數據。
上面的例子我們傳入的是一個字符串,其實,props可以傳入String、Number、Object、Boolen、Array等數據類型。那么我們在接受參數的時候就會有一個問題,我們怎么知道接收的應該是字符串"12"還是數字12呢?
所以 Vue有一個 Prop驗證 的功能。
子組件在接受數據的時候,可以指定接收具體類型的數據、是否不能為空,是否有默認值等。
Parent.vue
parent:下面是我的子組件
Child.vue
child:這是父組件給我傳的數據——name:{{name}}——firstName:{{firstName}}——lastName:{{lastName}}——age:{{age}}運行結果如下圖:
如果我們將條件改變的時候,name 傳入一個數組,firstName 不傳值,age 傳入一個不能轉換為數字的值。
運行結果如下圖:
Prop傳入對象
根據我們的驗證規則,name 必須為一個String 類型,所以控制臺報錯:希望得到一個String,得到了一個數組;firstName 為一個必填的值,但是我們沒有傳值,所以報錯;age要為一個可以轉換成數字的值,但是我們穿了"ss",會經過我們自定義的驗證,然后拋錯。如果我們要將一個 對象 的所有屬性全部傳給子組件,我們不需要將屬性一個個的作為Prop傳遞,只需要將整個對象傳遞過去就可以。
Parent.vue
template>parent:下面是我的子組件Childs.vue
child:這是父組件給我傳的數據——name:{{name}}——age:{{age}}運行結果如下圖:
Prop的單向數據傳遞 直接作為一個本地變量
我們傳入一個 obj 對象,然后在子組件里面可以拿到對象的所有屬性。Parent.vue
parent:下面是我的子組件Childs.vue
child:這是父組件給我傳的數據——{{con}}運行結果如下圖:
emit :子組件 向 父組件 傳遞數據 基本使用子組件向父組件傳遞數據,不能像上面一樣實時的傳遞數據,必須通過 事件 觸發。我們通過 $emit 方法來向父子間傳遞數據,第一個參數為事件的 名稱 ,第二個為傳遞的 數據 ,是一個可選的參數。父組件必須監聽同樣的事件名稱才能監聽到我們的這個事件,事件拋出的值必須通過 $event或者通過一個方法來訪問。
**Parent.vue
parent:這是我的子組件傳給我的值:{{num}}Childs.vue
child:這是父組件給我傳的數據——{{content}}
運行結果如下圖:
組件間的數據雙向綁定
子組件定義了一個num變量,然后點擊按鈕觸發method,通過 $emit向父組件發送事件的名稱(getNum)和一個參數(this.num),然后 父組件 監聽事件getNum,然后將傳遞值賦值給父組件的一個屬性上,這樣就可以是實現子組件點擊一次按鈕,就向父組件發送一次數據。更多實例可以參考官網。我們知道我們可以使用v-model來實現數據的雙向綁定。但是如果這個數據是跨組件的話,我們要怎樣實現綁定嗎?
首先我們先要明白v-model的原理。v-model其實是分為兩個方面,一方面數據層的改變引起視圖層的變化,我們可以使用v-bind來實現,另一方面視圖層的變化引起數據層的變化我們可以監聽事件來實現。所以我們想要雙向綁定一個數據,只需要這兩步操作。具體實現參考官網。
彈框嵌套表格組件化使用(待續...)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101382.html
摘要:本身提供哪幾種通信方式首先靈感源于,支持雙向綁定,本質還是單向數據流。跟一樣,組件間最基本的數據流是通過向子組件傳遞數據。但是在卻很少使用,因為組件可以自定義事件,即后面的組件間通信方式其實就是訂閱發布模式。 例子是在 jsrun.net 平臺編寫,不支持移動端平臺,所以本文建議在 PC 端進行閱讀。 Vue 是數據驅動的視圖框架,那么組件間的數據通信是必然的事情,那么組件間如何進行數...
摘要:整理種組件通信方式重點是梳理了前兩個父子組件通信和通信我覺得文檔里的說明還是有一些簡易我自己第一遍是沒看明白。第四種通信方式利用比較復雜可以單獨寫一篇 整理4種Vue組件通信方式 重點是梳理了前兩個,父子組件通信和eventBus通信,我覺得Vue文檔里的說明還是有一些簡易,我自己第一遍是沒看明白。 父子組件的通信 非父子組件的eventBus通信 利用本地緩存實現組件通信 Vuex...
摘要:首先是父組件里面的數據傳遞到子組件這里用,有支撐物的意思,可以理解為橋梁。 首先是父組件里面的數據傳遞到子組件這里用props,props有支撐物的意思,可以理解為橋梁。props要寫在自組件里面。 先定義一個子組件,在組件中注冊props {{message}}(子組件) export default { props: { ...
閱讀 1329·2021-09-04 16:40
閱讀 3455·2021-07-28 00:13
閱讀 2878·2019-08-30 11:19
閱讀 2611·2019-08-29 12:29
閱讀 3167·2019-08-29 12:24
閱讀 1122·2019-08-26 13:28
閱讀 2386·2019-08-26 12:01
閱讀 3445·2019-08-26 11:35