精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙JS UI 組件通信總結及任意組件通信

系統
組件間的通信主要作用是能在組件間傳遞數據或者執行相關的業務邏輯,對于鴻蒙應用組件,下面將對幾種組件間的通信方式進行代碼實現,其中包括實現自定義實現任意組件通信。

[[419195]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

組件間的通信主要作用是能在組件間傳遞數據或者執行相關的業務邏輯,對于鴻蒙應用組件,下面將對幾種組件間的通信方式進行代碼實現,其中包括實現自定義實現任意組件通信。

首先我們準備好幾個組件 parent組件、current組件、child1組件、child2組件,其中parent與current是父子組件關系、curren與child1/child2是父子組件關系、child1與child2是兄弟組件關系、parent與child1/child2是跨層級組件的關系。

common.css

  1. .title { 
  2.     font-size: 20px; 
  3.     text-align: left
  4.     padding-bottom: 5px; 
  5.     line-height: 20px; 
  6. .div-button { 
  7.     flex-direction: row; 
  8. .div-button .button { 
  9.     margin: 5px; 

1.parent組件

parent.hml

  1. <element src="../current/current.hml" name="current" ></element> 
  2. <div class="container"
  3.     <text class="title">parent-num : {{num}}</text> 
  4.     <text class="title">parent-info-str : {{info.str}}</text> 
  5.     <current id="current" title="parent" ></current
  6. </div> 

parent.js

  1. export default { 
  2.     data: { 
  3.         num: 0, 
  4.         info:{ 
  5.             str: 'parentStr' 
  6.         } 
  7.     } 

parent.css

  1. @import '../../../common/css/common.css'
  2. .container { 
  3.     display: flex; 
  4.     flex: 1; 
  5.     flex-direction: column
  6.     width: 100%; 
  7.     padding: 10px; 
  8.     background-color: aqua; 

2.current組件

current.hml

  1. <element src="../child1/child.hml" name="child1" ></element> 
  2. <element src="../child2/child.hml" name="child2" ></element> 
  3. <div class="container"
  4.     <text class="title">current-title : {{title}}</text> 
  5.     <text class="title">current-num : {{num}}</text> 
  6.     <text class="title">current-info-str : {{info.str}}</text> 
  7.     <div class="div-button"
  8.         <button class="button" type="capsule" value="改變parent" onclick="changeParent"></button> 
  9.         <button class="button" type="capsule" value="改變child1" onclick="changeChild1" ></button> 
  10.         <button class="button" type="capsule" value="改變child2" onclick="changeChild2" ></button> 
  11.     </div> 
  12.     <child1 id="child1" ></child1> 
  13.     <child2 id="child2" ></child2> 
  14. </div> 

current.js

  1. export default { 
  2.     props:{ 
  3.         title:{ 
  4.             default'current-title'
  5.         } 
  6.     }, 
  7.     data: { 
  8.         num: 0, 
  9.         info:{ 
  10.             str: 'currentStr' 
  11.         } 
  12.     }, 
  13.   
  14.     // 改變parent組件的num 和 info 
  15.     changeParent(){ 
  16.         console.log('**start**********************'); 
  17.         console.log('current change parent'); 
  18.   
  19.         let parent = this.$parent(); 
  20.         let num = parent.num + 1; 
  21.         parent.num = num; 
  22.         let info = { 
  23.             str: 'current change parent' 
  24.         }; 
  25. //        current.info = info; 
  26.   
  27.         parent.info.str = 'current change parent'
  28.   
  29.         console.log('num :'); 
  30.         console.log(num); 
  31.         console.log('info :'); 
  32.         console.log(JSON.stringify(info)); 
  33.         console.log('**end************************'); 
  34.     }, 
  35.   
  36.     // 改變child1組件的num 和 info 
  37.     changeChild1(){ 
  38.         console.log('**start**********************'); 
  39.         console.log('current change child1'); 
  40.   
  41.         let child1 = this.$child('child1'); 
  42.         let num = child1.num + 1; 
  43.         child1.num = num; 
  44.         let info = { 
  45.             str: 'current change child1' 
  46.         }; 
  47.         child1.info = info; 
  48.   
  49.         console.log('num :'); 
  50.         console.log(num); 
  51.         console.log('info :'); 
  52.         console.log(JSON.stringify(info)); 
  53.         console.log('**end************************'); 
  54.     }, 
  55.   
  56.     // 改變child2組件的num 和 info 
  57.     changeChild2(){ 
  58.         console.log('**start**********************'); 
  59.         console.log('current change child2'); 
  60.         let child2 = this.$child('child2'); 
  61.         let num = child2.num + 1; 
  62.         child2.num = num; 
  63.         let info = { 
  64.             str: 'current change child2' 
  65.         }; 
  66.         child2.info = info; 
  67.   
  68.         console.log('num :'); 
  69.         console.log(num); 
  70.         console.log('info :'); 
  71.         console.log(JSON.stringify(info)); 
  72.         console.log('**end************************'); 
  73.     } 

current.css

  1. @import '../../../common/css/common.css'
  2. .container { 
  3.     display: flex; 
  4.     flex: 1; 
  5.     flex-direction: column
  6.     width: 100%; 
  7.     padding: 10px; 
  8.     background-color: aquamarine; 
  9.     border: 1px solid #333333; 

3.child1組件

child1.hml

  1. <div class="container" style="line-height: 40px;"
  2.     <text class="title">child1-num : {{num}}</text> 
  3.     <text class="title">child1-info-str : {{info.str}}</text> 
  4. </div> 

child1.js

  1. export default { 
  2.     data: { 
  3.         num: 0, 
  4.         info:{ 
  5.             str: 'child1Str' 
  6.         } 
  7.     } 

child1.css

  1. @import '../../../common/css/common.css'
  2. .container { 
  3.     display: flex; 
  4.     flex-direction: column
  5.     width: 100%; 
  6.     padding: 10px; 
  7.     background-color: bisque; 
  8.     border: 1px solid #333333; 
  9.     min-height: 200px; 

4.child2組件

child2.hml

  1. <div class="container"
  2.     <text class="title">child2-num : {{num}}</text> 
  3.     <text class="title">child2-info-str : {{info.str}}</text> 
  4. </div> 

child2.js

  1. export default { 
  2.   
  3.     data: { 
  4.         num: 0, 
  5.         info:{ 
  6.             str: 'child2Str' 
  7.         } 
  8.     } 

child2.css

  1. @import '../../../common/css/common.css'
  2. .container { 
  3.     display: flex; 
  4.     flex-direction: column
  5.     width: 100%; 
  6.     padding: 10px; 
  7.     background-color: beige; 
  8.     border: 1px solid #333333; 
  9.     margin-top: 10px; 
  10.     min-height: 200px; 

最終預覽得到結果如下:

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

父子關系通信

parent與current是父子組件關系,在current.js中props的title=''current-title",在parent.hml中使用current組件時傳入title="parent"時,current組件顯示parent。

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區
鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

curren與child1/child2是父子組件關系,在current組件中有三個按鈕 改變parent、改變child1、改變child2

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在curren組件中,點擊改變parent按鈕會觸發changeParent方法,點擊改變child1按鈕會觸發changeChild1方法,點擊改變child1按鈕會觸發changeChild1方法,這些方法會改變對應組件中的數據,如下:

點擊改變parent

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

點擊改變child1

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

點擊改變child2

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在changeParent方法中使用this.$parent()方法來獲取了parent組件的ViewModel,從而可以訪問和改變parent組件的數據

在changeChild1和changeChild2中使用了this.$child(id)方法來獲取child1/child2組件的ViewModel,從而可以訪問和改變child1/child2組件的數據

除了使用this.$parent方法外還可以使用自定義事件的方式來進行子組件調用父組件方法來向父組件傳值,parent組件在引用current組件時綁定事件,在current組件中調用this.$emit方法來觸發綁定的自定義事件。

parent.hml

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

parent.js

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

current.js

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

總結下來,父子組件間的通信方式大概有幾種方法:

props:用于父組件向子組件傳遞數據

$emit:用于自組件向父組件傳遞數據或調用父組件方法

$parent:用于獲取父組件ViewModel從而可以修改父組件數據和調用父組件方法

$child:用于獲取子組件ViewModel從而修改子組件數據和調用子組件方法

兄弟關系與跨層級組件間通信

根據上面父子組件的通信方式,對于兄弟組件和跨層級組件之間,可以組合使用上面的幾種方法組合的方式可以實現非父子組件間的通信,但是如果組件間嵌套比較復雜,嵌套層級比較多的情況下,使用以上方法組合的方式顯然不太方便,在這里嘗試實現一種類似vue bus全局通信的方式來進行任意組件間的通信。

在JS API中app.js文件中定義的數據可以通過this.app.app.def獲取,根據這個特性和使用觀察者模式來設計一可以全局訂閱響應的通信模式。

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

首先我們定義evnetBus.js文件,在里面定義相關的訂閱、發布和取消訂閱的方法:

eventBus.js

  1. const Bus = { 
  2.     // 發布的事件集合 
  3.     $events:{}, 
  4.   
  5.     /** 
  6.      * 發布事件方法 
  7.      * type: string 字符串 
  8.      * fun: function 綁定的方法 
  9.      * */ 
  10.     $on(type,fun){ 
  11.   
  12.     }, 
  13.   
  14.     /** 
  15.      * 觸發事件方法 
  16.      * type: string 發布事件的字符串 
  17.      * args: 傳參 
  18.      * */ 
  19.     $emit(type,...args){ 
  20.   
  21.     }, 
  22.   
  23.     /** 
  24.     * 注銷事件方法 
  25.     * type: string 字符串 
  26.     * fun: string|function 發布事件時返回的值或者發布的原function 
  27.     * */ 
  28.     $off(type,fun){ 
  29.       
  30.     } 
  31. export default Bus; 

在里面我們定義了$events對象用于綁定事件的存放,$on方法用于綁定事件,$emit方法用于觸發事件,$off方法用于注銷事件,完整的eventBus.js如下

eventBus.js

  1. const Bus = { 
  2.     // 發布的事件集合 
  3.     $events:{ }, 
  4.   
  5.     /** 
  6.      * 發布事件方法 
  7.      * type: string 字符串 
  8.      * fun: function 綁定的方法 
  9.      * */ 
  10.     $on(type,fun){ 
  11.         let res = ""
  12.         if(type && typeof type == "string" && fun && typeof fun =="function"){ 
  13.             let events = this.$events[type]; 
  14.             if(events){ 
  15.                 let index = events.findIndex(null); 
  16.                 if(index > -1){ 
  17.                     res = `${String(index)}${type}`; 
  18.                     events[index] = fun; 
  19.                 }else
  20.                     events.push(fun); 
  21.                 } 
  22.             }else
  23.                 this.$events[type] = [fun]; 
  24.                 res = `0${type}`; 
  25.             } 
  26.   
  27.         } 
  28.         return res; 
  29.     }, 
  30.   
  31.     /** 
  32.      * 觸發事件方法 
  33.      * type: string 發布事件的字符串 
  34.      * args: 傳參 
  35.      * */ 
  36.     $emit(type,...args){ 
  37.         if(type && typeof type == "string"){ 
  38.             let events = this.$events[type]; 
  39.             if(events){ 
  40.                 events.forEach(fun => { 
  41.                     if(fun && typeof fun =="function"){ 
  42.                         fun(...args); 
  43.                     } 
  44.                 }); 
  45.             } 
  46.         } 
  47.     }, 
  48.   
  49.     /** 
  50.      * 注銷事件方法 
  51.      * type: string 字符串 
  52.      * fun: string|function 發布事件時返回的值或者發布的原function 
  53.      * */ 
  54.     $off(type,fun){ 
  55.         if(type && typeof type == "string" && fun){ 
  56.             let events = this.$events[type]; 
  57.             if(events){ 
  58.                 if(typeof fun == "string"){ 
  59.                     let indexStr = fun.replace(type,''); 
  60.                     let index = parseInt(indexStr); 
  61.                     events[index] = null
  62.                 } 
  63.                 if(typeof fun == "function"){ 
  64.                     events.forEach(item => { 
  65.                         if(item == fun){ 
  66.                             item = null
  67.                         } 
  68.                     }); 
  69.                 } 
  70.             } 
  71.         } 
  72.     } 
  73.   
  74. export default Bus; 

使用方法如下:

首先在app.js中引入eventBus:

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在parent組件的onInit方法中綁定事件,可以通過綁定的事件來改變parent組件的值:

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

然后我們修改child1組件,添加按鈕來觸發bus事件:

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在觸發方法的時候我們傳入了自定義參數數據"123456789"

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在點擊按鈕后將會觸發我們在parent組件中綁定的方法從而改變parent組件數據,同時也接收到了child組件傳過來的數據"123456789"

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在此就實現了跨層級組件間的通信,此方法可以對任意組件間的事件觸發和傳值都有效,限于篇幅不再展示,最后我們還要在組件銷毀的時候注銷我們綁定的事件。

我們定義一個注銷事件的按鈕并綁定注銷事件:

鴻蒙JS UI 組件通信總結及任意組件通信-鴻蒙HarmonyOS技術社區

在我們$on綁定事件的時候可以得到一個返回值,這個值也可以用于事件的注銷,在這里就不做演示了,有興趣的可以下去嘗試一下。

以上就是使用觀察者模式實現了一個簡易版的事件總線機制可以在任意組件間通信,基本功能可以實現,還有一些缺點需要提示:

1.首先這個在使用的時候必須依賴鴻蒙JS API this.$app.$def 這個方法,每次使用都要用這個來獲取eventBus對象。

2.在注冊綁定事件后一定要記得在當前組件銷毀的時候注銷綁定的事件,否則可能會造成內存泄露。

3.事件注銷有兩種方式,需要稍微理解注銷事件的原理才能熟練使用。

文章相關附件可以點擊下面的原文鏈接前往下載

TestApp.rar

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2024-01-09 08:34:56

Vue3.js組件通信

2021-09-14 09:34:05

鴻蒙HarmonyOS應用

2022-03-11 12:31:04

Vue3組件前端

2023-11-13 09:28:20

跨組件組件化

2021-08-03 12:47:58

鴻蒙HarmonyOS應用

2016-09-14 21:44:50

JavascriptreactJsjsx

2025-08-08 01:11:00

React組件通信

2021-08-02 08:22:33

BlazorEventCallba通信

2022-01-25 16:54:14

BLE操作系統鴻蒙

2019-05-29 14:23:53

Vue.js組件通信

2019-04-10 08:24:06

vue組件通信

2019-08-14 10:00:08

vue組件通信前端

2023-09-28 08:00:53

2023-01-05 07:39:28

2022-07-27 08:40:06

父子組件VUE3

2025-03-04 08:56:31

2019-02-26 10:33:24

快應用

2023-04-19 15:29:53

通信技巧Vue 3開發

2022-05-06 08:47:10

Vue 3組件前端

2021-01-20 13:50:36

鴻蒙HarmonyOS應用開發
點贊
收藏

51CTO技術棧公眾號

日本一区二区高清| 日韩和欧美的一区| 精品国产亚洲在线| 黄色一级在线视频| 青青久草在线| 久久三级福利| 麻豆乱码国产一区二区三区 | 精品国产免费人成网站| 国产精品亲子乱子伦xxxx裸| 91国产丝袜在线放| 国产成人在线视频观看| 欧美激情黄色片| 欧美mv日韩mv亚洲| 中文字幕欧美人妻精品一区| xvideos国产在线视频| 成人激情动漫在线观看| 国产aaa精品| 免费一级肉体全黄毛片| 色婷婷av一区二区三区丝袜美腿| 欧美三级视频在线观看| 日韩久久久久久久久久久久| 都市激情一区| 成人做爰69片免费看网站| 国产www精品| 久久精品国产av一区二区三区| 综合国产视频| 欧美大片一区二区| 五月婷婷丁香综合网| 91九色在线看| 亚洲精品五月天| 日韩欧美视频一区二区三区四区| а√天堂资源在线| 久久精品国产一区二区三| 韩国三级电影久久久久久| 国产福利视频网站| 国产成人精品免费视| 精品国产91亚洲一区二区三区婷婷| 日本黄大片一区二区三区| 国产三级电影在线播放| 日本一区二区免费在线| 久久影院理伦片| 欧美自拍第一页| 国产乱人伦偷精品视频不卡| 国产精品日韩精品| 国产精品久久久久久人| 99精品国产99久久久久久福利| 欧美黑人性猛交| 亚洲一级二级片| 日韩成人三级| 日韩中文字幕不卡视频| 在线免费观看日韩av| 日本午夜精品| 精品av久久707| 久久久久久久久久久久久久久国产| 亚洲成av在线| 色婷婷av一区二区三区gif| 日韩av在线第一页| 久操av在线| 亚洲一区二区三区四区在线| 热久久最新网址| 在线网址91| 一区二区三区中文字幕电影| 糖心vlog在线免费观看| 超碰在线免费播放| 亚洲美女偷拍久久| 欧美a级免费视频| 午夜激情在线| 亚洲成在人线在线播放| 青青青在线视频播放| 白浆在线视频| 欧美性猛交xxxx富婆| 亚洲欧洲日产国码无码久久99 | blacked蜜桃精品一区| 亚洲欧美精品一区二区| 亚洲人成人无码网www国产| 国产一区二区三区网| 在线视频中文亚洲| 女人18毛片毛片毛片毛片区二| 999久久久免费精品国产| 久久久999国产| 青青草原国产视频| 一级成人国产| 日韩美女在线观看一区| 在线观看国产一区二区三区| 狠狠色2019综合网| 成人三级在线| 青青九九免费视频在线| 国产亚洲欧洲一区高清在线观看| 亚洲精品高清国产一线久久| 浪潮av一区| 亚洲成人av一区| 91在线视频观看免费| 久久av影院| 精品国产一区久久| 少妇精品无码一区二区免费视频| 国产精品久久观看| 欧美激情免费视频| 国产精品xxxxxx| 国产69精品久久777的优势| 久久久福利视频| 免费日本一区二区三区视频| 亚洲成人手机在线| 自拍偷拍21p| 久久男人av| 久久精品视频在线观看| 国产午夜精品无码一区二区| 另类专区欧美蜜桃臀第一页| 国产亚洲自拍偷拍| 欧美日韩xx| 欧美性xxxx18| 亚洲熟妇一区二区| 欧美日韩国产在线观看网站 | 成人涩涩视频| 亚洲精品在线观| 啪啪一区二区三区| 欧美综合国产| 亚洲一区二区三区香蕉| 搞黄视频在线观看| 亚洲成在人线免费| 日韩av自拍偷拍| 日本国产精品| 久久影视免费观看| 成人午夜精品视频| 久久久久蜜桃| 国产伦精品一区二区三区视频| 欧美中文字幕久久| 97超碰成人在线| 日韩一区二区三区色| 精品视频久久久久久久| 无码人妻精品中文字幕| 在线综合欧美| 91久久精品美女高潮| 深夜福利免费在线观看| 亚洲一区av在线| 99热这里只有精品在线播放| 成人三级毛片| 日韩一二三在线视频播| 久久久久97国产| 蜜桃久久久久久久| 日本视频精品一区| 成人影院在线播放| 6080日韩午夜伦伦午夜伦| 青青草视频播放| 中文字幕av亚洲精品一部二部| 国产成人+综合亚洲+天堂| 国产又爽又黄又嫩又猛又粗| 国产精品家庭影院| 成人一区二区三| 老司机成人在线| 欧美大片网站在线观看| 一级成人免费视频| 国产免费成人在线视频| 手机在线免费观看毛片| 免费视频一区三区| 欧美亚洲另类视频| 搡老岳熟女国产熟妇| 一区二区三区高清| 向日葵污视频在线观看| 欧美好骚综合网| 国产欧美va欧美va香蕉在| 欧美在线一卡| 精品久久久视频| 国产综合内射日韩久| 久久精品国产68国产精品亚洲| 国产精品中文字幕在线观看| 国产一级二级三级在线观看| 欧美日韩国产在线看| 老女人性生活视频| 91精品秘密在线观看| 国产在线视频不卡| 黄色成人影院| 91精品国产综合久久久久久久| 欧美成人短视频| 日韩1区2区日韩1区2区| 日韩三级电影| 91九色综合| 久久夜色精品国产欧美乱| 99久久国产免费| 日韩码欧中文字| 中文字幕日韩久久| 欧美搞黄网站| 国产精品一码二码三码在线| 国产高清不卡| 一区二区三区视频免费| 中文字幕av网站| 国产精品久久久久久久浪潮网站| 中文字幕 91| 亚洲色图二区| 高清国产一区| 手机在线观看av| 精品亚洲一区二区三区| 中文字幕手机在线视频| 中文文精品字幕一区二区| 免费黄色av网址| 一本不卡影院| 日韩欧美一区二区视频在线播放 | 亚洲三级在线| 久久久电影免费观看完整版| 91精品国产乱码久久久| 亚洲美女精品一区| 性久久久久久久久久久| 久久资源在线| 色哟哟免费网站| 国产亚洲一卡2卡3卡4卡新区 | 日本不卡视频在线观看| 2021狠狠干| 免费看久久久| 国产91精品不卡视频| aaa在线免费观看| 日韩一区二区免费在线电影| 日韩 欧美 亚洲| 成人欧美一区二区三区小说 | 青青在线精品| 欧美黑人性猛交| 国产二区在线播放| 日韩欧美色综合| 成人精品免费在线观看| 亚洲婷婷国产精品电影人久久| 香蕉久久久久久av成人| 久久精品一区二区三区中文字幕| 三年中文高清在线观看第6集| 粉嫩久久久久久久极品| 成人黄色av网| 成人av三级| 欧美日韩xxx| 国内在线精品| 精品福利在线导航| 中文字幕观看视频| 天天av天天翘天天综合网 | 国产精品午夜在线观看| 中文字幕在线国产| 蜜臀av一区二区在线免费观看| 亚洲视频在线二区| 最近国产精品视频| av色综合网| 国产麻豆一区| 欧美最近摘花xxxx摘花| 91高清在线观看视频| 久久九九免费视频| 国产在线一在线二| 精品国产免费人成在线观看| 一本久道久久综合无码中文| 欧美性xxxxx极品娇小| 日韩免费av片| 一区二区三区自拍| 国产麻豆a毛片| 久久久www成人免费毛片麻豆| 在线观看一区二区三区视频| 久久午夜影视| 国产福利影院在线观看| 精品999成人| 国产 欧美 日本| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 一本一道久久a久久精品综合| 香蕉久久精品日日躁夜夜躁| 99se婷婷在线视频观看| 快播电影网址老女人久久| 97视频在线看| а√天堂8资源中文在线| 欧美激情在线狂野欧美精品| 二区三区在线观看| 久久激情视频免费观看| 午夜激情在线观看| 日韩亚洲精品电影| 成人无遮挡免费网站视频在线观看| 国产亚洲精品一区二区| 国产高清视频在线播放| 亚洲图片在区色| 免费在线观看黄色网| 久久久97精品| 国产精品va在线观看视色| 久久国产一区二区三区| 超鹏97在线| 久久久久久综合网天天| 国产福利在线免费观看| 欧美极品在线播放| a在线视频v视频| 5566日本婷婷色中文字幕97| 电影一区电影二区| 国产精品丝袜高跟| 亚洲91在线| 亚洲a∨日韩av高清在线观看| 久久丁香四色| 国产精品日韩二区| 秋霞蜜臀av久久电影网免费| 欧美极品一区| 亚洲电影一级片| 亚洲国产一区在线| 欧美国内亚洲| 国产精品无码人妻一区二区在线 | 久久精品欧美一区二区三区不卡 | 亚洲丝袜美腿综合| 欧美极品视频在线观看| 性做久久久久久免费观看| 亚洲高清毛片一区二区| 在线视频观看一区| 精品国产亚洲av麻豆| 亚洲激情小视频| 国产女主播在线写真| 色偷偷噜噜噜亚洲男人| 午夜视频成人| 日本久久精品视频| 91嫩草国产线观看亚洲一区二区 | 国产精品久久久午夜夜伦鲁鲁| 91精品国产一区二区三区蜜臀| 国产成人自拍一区| 日韩中文字幕不卡视频| 国产在线看片免费视频在线观看| 国产91免费看片| 成人中文字幕视频| 正在播放精油久久| 噜噜噜91成人网| 又黄又色的网站| 综合久久给合久久狠狠狠97色| 久久久黄色大片| 欧美日韩你懂得| 欧美少妇另类| 欧美成人午夜视频| 3d性欧美动漫精品xxxx软件| av一本久道久久波多野结衣| 久久99视频| 国内少妇毛片视频| 日本欧美大码aⅴ在线播放| 天天插天天射天天干| **欧美大码日韩| 一区二区三区在线观看av| 日韩小视频在线观看专区| www.av在线| 91精品国产91久久久| 综合激情五月婷婷| 一区二区高清视频| 性色av一区二区怡红| 国产裸体免费无遮挡| av一二三不卡影片| 内射一区二区三区| 欧洲另类一二三四区| 黄色美女一级片| 免费97视频在线精品国自产拍| 欧美成人精品一区二区男人小说| 91免费看蜜桃| 欧美系列电影免费观看| 无遮挡又爽又刺激的视频| 成人手机在线视频| 亚洲综合网在线| 欧美日韩视频在线第一区| av小片在线| 日韩免费视频在线观看| 美女视频亚洲色图| 法国空姐在线观看免费| 国产一本一道久久香蕉| 妖精视频在线观看免费 | 色999日韩欧美国产| 欧美电影h版| 精品一区在线播放| 亚洲人成免费| 日本xxxx裸体xxxx| 亚洲福利视频导航| 亚洲欧美另类视频| 久久99国产精品久久久久久久久| 视频在线亚洲| 久久国产精品免费观看| 美女国产一区二区| 成人激情五月天| 欧美日韩国产美女| 欧美私人网站| 成人h视频在线观看播放| 日韩欧美在线中字| 欧美激情国内自拍| 日韩久久一区二区| 日本wwwxxxx| 91精品国产91久久久久久久久| 老牛国内精品亚洲成av人片| 久久免费一级片| av在线不卡免费看| 国产精品成人久久| 亚洲国产精品电影| 国产伦久视频在线观看| 日本精品二区| 久久99日本精品| 青青青在线免费观看| 亚洲国产精品人人爽夜夜爽| 欧美aaaaa性bbbbb小妇| 精品国产一区二区三区麻豆免费观看完整版 | 深夜福利视频一区| 国产精品无码专区在线观看| 国产精品videosex性欧美| 日韩不卡的av| 亚洲一区影音先锋| 日本电影一区二区在线观看| 日韩免费观看在线观看| 日韩欧美午夜| 日韩av无码一区二区三区不卡| 日韩欧美国产骚| 成年人视频在线看| 2014亚洲精品| 一区在线免费| 日本欧美一区二区三区不卡视频| 日本黄色一区二区| 91精选在线| 欧美激情专区|