国产性猛交xx乱_性色国产成人久久久精品_亚洲成年人av_亚洲av片不卡无码久久_日本精品一二三_久久免费精品国产_欧美成人精品一区二区综合免费_无码人妻丰满熟妇区毛片蜜桃精品_四虎永久免费影院_国产一区二区三区四区在线

Vue 組件通信(父?jìng)髯?子傳父,跨組件傳值)

2021-10-9    前端達(dá)人

目錄

一, 簡(jiǎn)單介紹組件通信

二, 詳解傳值方法

1.父?jìng)髯?props

2.子傳父 $emit

3.跨組件通信 event-bus


一, 簡(jiǎn)單介紹組件通信

        我們知道在現(xiàn)在的開發(fā)環(huán)境下,不管前后端開發(fā)都是組件化模塊化,這是因?yàn)榻M件的優(yōu)勢(shì)無(wú)比的巨大,可以進(jìn)行多次的復(fù)用增加開發(fā)效率,也可以分類鮮明,便于維護(hù),而我今天所寫的就是開發(fā)中分割成不同的組件互相傳遞數(shù)據(jù)和互動(dòng)

        我的工作中常用地組件通信大致分為三類: 父?jìng)髯?, 子傳父 , 跨組件傳值

        下面就來(lái)分別介紹一下 我常用的這三種傳值方法

二, 詳解傳值方法

        父子組件的確認(rèn)方法:我將 B 組件import引入到 A 組件中,那么 B 就是 A 的子組件,A 就是 B 的父組件

1.父?jìng)髯?props

        簡(jiǎn)而言之,父?jìng)髯泳褪歉附M件把數(shù)據(jù)傳給子組件,具體就是如下,在子組件的props中定義自定義屬性來(lái)待接收父組件的數(shù)據(jù),有兩種方法 如下:

        第一種,也是最推薦用的一種,以復(fù)雜類型的方式進(jìn)行聲明,這樣存儲(chǔ)的便是一個(gè)地址,可以和父組件的數(shù)據(jù)進(jìn)行雙向綁定,同步數(shù)據(jù),雖然可以雙向綁定,但是在Vue2.0中還是不可以直接在子組件中更改父組件的數(shù)據(jù),需要用到子傳父才行,這點(diǎn)等下會(huì)寫到

        這里只是用 text 舉個(gè)栗子,具體叫什么都可以哈,只是父子里面需要對(duì)應(yīng)上相同

        這個(gè) text 接收到數(shù)據(jù)后的使用方法和一般data中聲明的變量一樣,只是不能再子組件中改變他

子組件中:        props 定義屬性接收

 
  1. <template>
  2. <div>
  3. <h2>son組件</h2>
  4. <p>props:{{ text }}</p>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. // 在此處定義props
  10. props: {
  11. // props中定義 接收父組件數(shù)據(jù)的自定義屬性,叫什么都可以,我隨便起了個(gè)text
  12. text: {
  13. type: String, // type 是用來(lái)規(guī)定此屬性接收到的數(shù)據(jù)的數(shù)據(jù)類型
  14. default: "未傳遞時(shí)默認(rèn)的文字" // 這個(gè)default是當(dāng)這個(gè) text 沒(méi)有接收到傳遞的數(shù)據(jù)時(shí)的默認(rèn)值
  15. }
  16. }
  17. }
  18. </script>

父組件中:        標(biāo)簽內(nèi) 傳遞數(shù)據(jù)

 
  1. <template>
  2. <div id="app">
  3. <!--
  4. 這里的text就是子組件props里定義的text,這兩個(gè)名字得一致
  5. 并且傳遞的數(shù)據(jù)也要符合 type 規(guī)定的數(shù)據(jù)類型
  6. text就是傳遞字符串,:text就是傳遞動(dòng)態(tài)數(shù)據(jù)
  7. -->
  8. <Son text="我是大娃 傳給子啦" />
  9. <Son :text="wenzi" />
  10. </div>
  11. </template>
  12. <script>
  13. import Son from './components/son.vue';
  14. export default {
  15. data () {
  16. return {
  17. wenzi: '我是二娃 傳給子啦'
  18. }
  19. },
  20. components: {
  21. Son
  22. }
  23. }
  24. </script>

        如上 雖然我的注釋寫的很清楚了,但是還是在介紹一下, <Son/> 是子組件的標(biāo)簽,在此標(biāo)簽的基礎(chǔ)上書寫 子組件props 定義的屬性名,并且傳遞參數(shù)具體對(duì)應(yīng)關(guān)系和效果如下:

        如上就是第一種我最常用的父?jìng)髯?其實(shí)還有一種方法,但是我一般也不用,很不方便,也貼到下邊了,這個(gè)是以數(shù)組方式聲明

 
  1. export default {
  2. // 在此處定義props
  3. props: ['text']
  4. }
  5. </script>

 

2.子傳父 $emit

        剛剛說(shuō)到了在 Vue2.0 子組件不能直接改父組件的數(shù)據(jù),否則會(huì)報(bào)錯(cuò),這個(gè)解決方法就是在子組件中發(fā)起一個(gè) 自定義事件 ,在父組件監(jiān)聽(tīng)這個(gè)事件,并且定義一個(gè)函數(shù)來(lái)改變數(shù)據(jù),具體操作如下:

子組件:        發(fā)起一個(gè)自定義事件,等待父組件監(jiān)聽(tīng)到執(zhí)行函數(shù)

 
  1. <template>
  2. <div>
  3. <h2>son組件</h2>
  4. <p>props:{{ text }}</p>
  5. <button @click="changeTextFn">改變文字</button>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. // 在此處定義props
  11. props: {
  12. // props中定義 接收父組件數(shù)據(jù)的自定義屬性,叫什么都可以,我隨便起了個(gè)text
  13. text: {
  14. type: String, // type 是用來(lái)規(guī)定此屬性接收到的數(shù)據(jù)的數(shù)據(jù)類型
  15. default: "未傳遞時(shí)默認(rèn)的文字" // 這個(gè)default是當(dāng)這個(gè) text 沒(méi)有接收到傳遞的數(shù)據(jù)時(shí)的默認(rèn)值
  16. }
  17. },
  18. methods: {
  19. // 按鈕點(diǎn)擊事件
  20. changeTextFn () {
  21. // 發(fā)起自定義事件,名字叫什么都行,第一個(gè)參數(shù)是事件名,之后再跟著的都是傳遞的參數(shù)
  22. this.$emit('changeFn', '我想變成三娃')
  23. }
  24. }
  25. }
  26. </script>

        我先在原有的代碼上添加了一個(gè)<button>按鈕,在點(diǎn)擊調(diào)用的函數(shù)中,通過(guò) $emit 來(lái)發(fā)起事件并且可以傳遞參數(shù)

格式:        this.$emit('changeFn', '我想變成三娃') 

格式:        this.$emit('自定義事件名', 傳遞的參數(shù)) 

 

父組件:        行內(nèi)監(jiān)聽(tīng)子組件的 自定義事件名(函數(shù)上不用寫參數(shù),在 methods 中直接寫形參就行)

 
  1. <template>
  2. <div id="app">
  3. <Son :text="wenzi" @changeFn="changeFn" />
  4. </div>
  5. </template>
  6. <script>
  7. import Son from './components/son.vue';
  8. export default {
  9. data () {
  10. return {
  11. wenzi: '我是二娃 傳給子啦'
  12. }
  13. },
  14. components: {
  15. Son
  16. },
  17. methods: {
  18. // 監(jiān)聽(tīng)子組件自定義事件
  19. changeFn (newText) {
  20. // 這里的形參接受到的就是子組件中 第二個(gè)參數(shù)傳遞的數(shù)值
  21. this.wenzi = newText
  22. }
  23. }
  24. }
  25. </script>

對(duì)應(yīng)關(guān)系和效果圖如下:

 

 

 

3.跨組件通信 event-bus

        如果兩個(gè)組件的關(guān)系非常的復(fù)雜或者沒(méi)有未產(chǎn)生直接聯(lián)系,那么通過(guò)父子組件通訊是非常麻煩的。這時(shí)候可以使用通用的組件通訊方案:事件總線(event-bus)

        按照我的習(xí)慣,我會(huì)將事件總線創(chuàng)建到 main.js 中,這個(gè)使用原理是將bus掛載到Vue原型上,這樣就可以保證所有的組件都能通過(guò) this.bus 訪問(wèn)到事件總線,從而通過(guò)同一個(gè)事件總線監(jiān)聽(tīng)同一個(gè)事件,具體原理和父子傳參差不多,都是 $emit 傳遞數(shù)據(jù), 只不過(guò)接收變成了$on 

        我這次以送禮物舉例用了兩個(gè)關(guān)系不大的組件 分別是 男組件 和 女組件 (隨便起的名)具體如下圖:

發(fā)送數(shù)據(jù) 男組件:   

    this.bus.$emit('自定義事件名',傳遞的參數(shù)) 

 
  1. <template>
  2. <div>
  3. <h1>男組件</h1>
  4. <button @click="sendGiftFn">送禮物</button>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. data () {
  10. return {
  11. gift: '玫瑰花'
  12. }
  13. },
  14. methods: {
  15. sendGiftFn () {
  16. // 通過(guò) bus 事件總線發(fā)起 自定義事件,并且傳遞參數(shù)(第一個(gè)是事件名,第二個(gè)開始是參數(shù))
  17. this.bus.$emit('sendMessage', this.gift)
  18. }
  19. }
  20. }
  21. </script>

接收數(shù)據(jù) 女組件:         

 this.bus.$on('監(jiān)聽(tīng)的事件名',(e)=>{ e這個(gè)形參所接收的就是監(jiān)聽(tīng)事件所攜帶的參數(shù)數(shù)據(jù) }) 

 
  1. <template>
  2. <div>
  3. <h1>女組件</h1>
  4. <p>來(lái)自男組件的禮物:{{ info }}</p>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. data () {
  10. return {
  11. info: ""
  12. }
  13. },
  14. created () {
  15. // e 就是 sendMessage 這個(gè)事件所傳遞的數(shù)據(jù)
  16. this.bus.$on("sendMessage", (e) => {
  17. this.info = e;
  18. });
  19. }
  20. }
  21. </script>
  22. <style>
  23. </style>

具體效果如下:

 

綜上所述,就是我在工作中總結(jié)出來(lái)的一些組建通信的方法,希望您看到這里會(huì)有所收獲

藍(lán)藍(lán)設(shè)計(jì)建立了UI設(shè)計(jì)分享群,每天會(huì)分享國(guó)內(nèi)外的一些優(yōu)秀設(shè)計(jì),如果有興趣的話,可以進(jìn)入一起成長(zhǎng)學(xué)習(xí),請(qǐng)掃碼藍(lán)小助,報(bào)下信息,藍(lán)小助會(huì)請(qǐng)您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請(qǐng)與我們聯(lián)系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉(zhuǎn)自:csdn
免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

藍(lán)藍(lán)設(shè)計(jì)m.wowo44.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

国产性猛交xx乱_性色国产成人久久久精品_亚洲成年人av_亚洲av片不卡无码久久_日本精品一二三_久久免费精品国产_欧美成人精品一区二区综合免费_无码人妻丰满熟妇区毛片蜜桃精品_四虎永久免费影院_国产一区二区三区四区在线
91国偷自产一区二区使用方法| 国产欧美一区二区精品仙草咪| 亚洲人成网站精品片在线观看| 国产一区二区三区综合| 蜜臀av一区二区三区有限公司| 欧美精品欧美精品系列| 亚洲综合色丁香婷婷六月图片| 99视频在线精品| 永久看片925tv| 国产精品国产三级国产专播品爱网| 国内精品久久久久影院薰衣草| 给我看免费高清在线观看| 欧美伦理电影网| 性做久久久久久免费观看| 国产精品熟妇一区二区三区四区 | 国产成人精品在线看| 国产综合精品久久久久成人av| 2023国产精品自拍| 国产呦萝稀缺另类资源| 992在线观看| 国产精品久久久久aaaa樱花| 一级精品视频在线观看宜春院| 成人av免费在线观看| 色av一区二区| 亚洲一区二区精品久久av| 精品伦一区二区三区| 欧美老女人在线| 日韩成人免费在线| 久久久久久国产免费a片| 欧美极品美女视频| www.欧美日韩| 欧美日韩高清影院| 日韩和欧美一区二区三区| 国产又粗又猛又爽视频| 2021久久国产精品不只是精品| 国产精品1区二区.| 91成人免费在线视频| 午夜精品影院在线观看| 精品少妇一区二区三区免费观| 久久综合国产精品| 成人av资源在线| 欧美日韩国产大片| 麻豆91免费看| 26uuu成人网| 亚洲自拍偷拍麻豆| 我和岳m愉情xxxⅹ视频| 日本一区二区三区久久久久久久久不 | 国产福利一区二区三区视频| 亚洲av鲁丝一区二区三区| 亚洲一区二区三区自拍| 真人bbbbbbbbb毛片| 久久久精品免费免费| 99久久亚洲一区二区三区青草| 欧美日韩1234| 激情久久五月天| 在线亚洲欧美专区二区| 日韩电影一二三区| www.97视频| 亚洲国产wwwccc36天堂| 中文字幕免费在线看线人动作大片| 国产欧美一区二区精品性色超碰| 俄罗斯女人裸体性做爰| 337p粉嫩大胆噜噜噜噜噜91av| 成人激情综合网站| 91精品中文字幕一区二区三区| 极品少妇xxxx精品少妇| 在线观看不卡一区| 麻豆91精品视频| 在线观看区一区二| 激情偷乱视频一区二区三区| 色综合天天综合| 日韩成人伦理电影在线观看| 三级在线观看免费大全| 亚洲aⅴ怡春院| 国产小视频你懂的| 天天综合网 天天综合色| 国产激情无码一区二区三区| 亚洲aⅴ怡春院| 欧美一区二区三区爽爽爽| 秋霞影院一区二区| 色综合天天狠狠| 韩国午夜理伦三级不卡影院| 欧美日韩日日骚| 国产成人在线影院| 日韩欧美高清一区| 972aa.com艺术欧美| 精品福利一二区| 免费看91视频| 国产精品福利一区| 久久亚洲无码视频| 亚洲成人在线观看视频| 中国毛片直接看| 卡一卡二国产精品| 欧美人牲a欧美精品| 菠萝蜜视频在线观看一区| 26uuu色噜噜精品一区| 18禁一区二区三区| 中文字幕在线一区免费| 欧美性受xxxx黑人| 热久久国产精品| 欧美日本一区二区在线观看| 成人av电影免费在线播放| 久久久久久久久97黄色工厂| 国产国语性生话播放| 亚洲网友自拍偷拍| 色素色在线综合| 国产69精品久久久久毛片| 欧美一区二区三区四区高清| 中国男女全黄大片| 亚洲图片欧美激情| 五月综合色婷婷| 国产精品中文有码| 精品成人在线观看| 中文字幕乱码在线| 亚洲成av人片在线观看无码| 在线观看成人小视频| 99精品视频在线观看免费| 久久久久国产成人精品亚洲午夜| 精品人妻互换一区二区三区| 日日骚欧美日韩| 3d动漫精品啪啪一区二区竹菊| 亚洲性图第一页| 亚洲在线视频一区| 欧美亚洲综合一区| 99精品偷自拍| 一区二区三区在线观看国产| 日本黄色一区二区| 91香蕉视频污| 亚洲精品乱码久久久久久| 一本色道久久综合亚洲aⅴ蜜桃| 成人免费福利片| 国产精品久久久久久久久免费相片| 国产黄色片在线| 国产一区二区免费在线| 国产丝袜欧美中文另类| 欧美特黄一级片| 亚洲va国产va欧美va观看| 欧美精品丝袜久久久中文字幕| 无码人妻aⅴ一区二区三区玉蒲团| 亚洲综合成人网| 欧美嫩在线观看| 制服丝袜在线第一页| 天堂va蜜桃一区二区三区漫画版| 5566中文字幕一区二区电影| 国产极品一区二区| 免费高清在线一区| 久久久777精品电影网影网| 自拍偷拍第9页| 成人高清av在线| 亚洲精品久久久久久国产精华液| 欧美视频一区在线观看| 亚洲美女在线播放| 毛片av一区二区三区| 久久人人97超碰com| 色老板免费视频| 老女人性生活视频| 婷婷中文字幕综合| 久久久无码精品亚洲日韩按摩| 国产精品国产三级国产传播| 99视频有精品| 日韩不卡一区二区三区| 欧美精品一区二区在线播放| 肉色超薄丝袜脚交69xx图片| 99久久夜色精品国产网站| 亚洲国产中文字幕| 精品成人一区二区| 亚洲色偷偷综合亚洲av伊人| 91美女在线视频| 免费在线观看精品| 国产欧美一区二区精品性| 欧美亚洲另类激情小说| 丰满大乳奶做爰ⅹxx视频| 国产中文一区二区三区| 亚洲色图在线视频| 欧美一区二区三区色| 亚洲女人久久久| 亚洲美女高潮久久久| 久久国产精品免费| 1024成人网色www| 欧美一卡2卡3卡4卡| 大地资源高清在线视频观看| 制服下的诱惑暮生| 精品在线一区二区三区| 亚洲视频免费在线观看| 日韩欧美在线123| 国产精品国产高清国产| 久久久久9999| 成人丝袜18视频在线观看| 丝袜美腿亚洲综合| 国产精品久久网站| 91精品国产91久久综合桃花| 日韩成人短视频| 黄色片视频免费观看| 成年人国产精品| 青青草精品视频| 亚洲欧美激情小说另类| 精品国产第一区二区三区观看体验| 69av视频在线| 国产成人精品无码免费看夜聊软件| 高清久久久久久|