成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue父子組件通信的三兩事(prop、emit)

darcrand / 919人閱讀

摘要:的單向數(shù)據(jù)傳遞直接作為一個本地變量下面是我的子組件這是父組件給我傳的數(shù)據(jù)運行結(jié)果如下圖子組件向父組件傳遞數(shù)據(jù)基本使用子組件向父組件傳遞數(shù)據(jù),不能像上面一樣實時的傳遞數(shù)據(jù),必須通過事件觸發(fā)。

組件是Vue核心功能之一,合理的組件化,可以減少我們代碼的冗余,提高項目的可維護性。下面,我將由淺入深的講Vue的組件
在講之前,首先我們先了解一下組件的命名。
HTML是對特征名不敏感的語言,他會將所有的字符全部轉(zhuǎn)換成小寫。我們命名了一個組件的名稱為 nameTest ,然后再其他組件里面引用 ,那么我們將找不到這個組件,因為這個組件一已經(jīng)將名字轉(zhuǎn)換為nametest

props : 父組件子組件 傳參 基本使用

Parent.vue


Childs.vue


我們在 Parent.vue 組件里面引用子組件 Childs.vue 然后傳入 userName 參數(shù)給子組件,Childs 在props里面接收父組件傳傳來的數(shù)據(jù)。

上面的例子我們傳入的是一個字符串,其實,props可以傳入StringNumber、ObjectBoolen、Array等數(shù)據(jù)類型。那么我們在接受參數(shù)的時候就會有一個問題,我們怎么知道接收的應該是字符串"12"還是數(shù)字12呢?
所以 Vue有一個 Prop驗證 的功能。

Prop 驗證

子組件在接受數(shù)據(jù)的時候,可以指定接收具體類型的數(shù)據(jù)、是否不能為空,是否有默認值等。

Parent.vue


Child.vue


運行結(jié)果如下圖:

如果我們將條件改變的時候,name 傳入一個數(shù)組,firstName 不傳值,age 傳入一個不能轉(zhuǎn)換為數(shù)字的值。

 

運行結(jié)果如下圖:




根據(jù)我們的驗證規(guī)則,name 必須為一個String 類型,所以控制臺報錯:希望得到一個String,得到了一個數(shù)組;firstName 為一個必填的值,但是我們沒有傳值,所以報錯;age要為一個可以轉(zhuǎn)換成數(shù)字的值,但是我們穿了"ss",會經(jīng)過我們自定義的驗證,然后拋錯。

Prop傳入對象

如果我們要將一個 對象 的所有屬性全部傳給子組件,我們不需要將屬性一個個的作為Prop傳遞,只需要將整個對象傳遞過去就可以。

Parent.vue

template>
parent:下面是我的子組件

Childs.vue


運行結(jié)果如下圖:

我們傳入一個 obj 對象,然后在子組件里面可以拿到對象的所有屬性。

Prop的單向數(shù)據(jù)傳遞 直接作為一個本地變量

Parent.vue


Childs.vue


運行結(jié)果如下圖:

emit :子組件父組件 傳遞數(shù)據(jù) 基本使用

子組件父組件傳遞數(shù)據(jù),不能像上面一樣實時的傳遞數(shù)據(jù),必須通過 事件 觸發(fā)。我們通過 $emit 方法來向父子間傳遞數(shù)據(jù),第一個參數(shù)為事件的 名稱 ,第二個為傳遞的 數(shù)據(jù) ,是一個可選的參數(shù)。父組件必須監(jiān)聽同樣的事件名稱才能監(jiān)聽到我們的這個事件,事件拋出的值必須通過 $event或者通過一個方法來訪問。

**Parent.vue


運行結(jié)果如下圖:

子組件定義了一個num變量,然后點擊按鈕觸發(fā)method,通過 $emit向父組件發(fā)送事件的名稱(getNum)和一個參數(shù)(this.num),然后 父組件 監(jiān)聽事件getNum,然后將傳遞值賦值給父組件的一個屬性上,這樣就可以是實現(xiàn)子組件點擊一次按鈕,就向父組件發(fā)送一次數(shù)據(jù)。更多實例可以參考官網(wǎng)。

組件間的數(shù)據(jù)雙向綁定

我們知道我們可以使用v-model來實現(xiàn)數(shù)據(jù)的雙向綁定。但是如果這個數(shù)據(jù)是跨組件的話,我們要怎樣實現(xiàn)綁定嗎?

首先我們先要明白v-model的原理。v-model其實是分為兩個方面,一方面數(shù)據(jù)層的改變引起視圖層的變化,我們可以使用v-bind來實現(xiàn),另一方面視圖層的變化引起數(shù)據(jù)層的變化我們可以監(jiān)聽事件來實現(xiàn)。所以我們想要雙向綁定一個數(shù)據(jù),只需要這兩步操作。具體實現(xiàn)參考官網(wǎng)。

彈框嵌套表格組件化使用

(待續(xù)...)

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101382.html

相關文章

  • Vue 組件通信方式

    摘要:本身提供哪幾種通信方式首先靈感源于,支持雙向綁定,本質(zhì)還是單向數(shù)據(jù)流。跟一樣,組件間最基本的數(shù)據(jù)流是通過向子組件傳遞數(shù)據(jù)。但是在卻很少使用,因為組件可以自定義事件,即后面的組件間通信方式其實就是訂閱發(fā)布模式。 例子是在 jsrun.net 平臺編寫,不支持移動端平臺,所以本文建議在 PC 端進行閱讀。 Vue 是數(shù)據(jù)驅(qū)動的視圖框架,那么組件間的數(shù)據(jù)通信是必然的事情,那么組件間如何進行數(shù)...

    hss01248 評論0 收藏0
  • 整理4種Vue組件通信方式

    摘要:整理種組件通信方式重點是梳理了前兩個父子組件通信和通信我覺得文檔里的說明還是有一些簡易我自己第一遍是沒看明白。第四種通信方式利用比較復雜可以單獨寫一篇 整理4種Vue組件通信方式 重點是梳理了前兩個,父子組件通信和eventBus通信,我覺得Vue文檔里的說明還是有一些簡易,我自己第一遍是沒看明白。 父子組件的通信 非父子組件的eventBus通信 利用本地緩存實現(xiàn)組件通信 Vuex...

    MingjunYang 評論0 收藏0
  • Vue 父子組件之間數(shù)據(jù)通信--props,$emit

    摘要:首先是父組件里面的數(shù)據(jù)傳遞到子組件這里用,有支撐物的意思,可以理解為橋梁。 首先是父組件里面的數(shù)據(jù)傳遞到子組件這里用props,props有支撐物的意思,可以理解為橋梁。props要寫在自組件里面。 先定義一個子組件,在組件中注冊props {{message}}(子組件) export default { props: { ...

    jk_v1 評論0 收藏0
  • vue父子組件通信

    組件目錄結(jié)構 parentchild API: $emit、 $on、 $refs、 props 1、父子組件通信 showImg(https://segmentfault.com/img/remote/1460000017497582); 需求合理性我們先不考慮,demo就為了搞清怎么通信,我們要求:1、父組件傳值給子組件,同時父組件input輸入框value也可同步到子組件2、點擊子組件加減子...

    xcold 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<