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

Vue.js 父子組件通信的十種方式

網絡 通信技術
無可否認,現在無論大廠還是小廠都已經用上了 Vue.js 框架,簡單易上手不說,教程詳盡,社區活躍,第三方套件還多。

 [[266702]]

面試官:Vue 中父子組件通信有哪些方式?

自己先想一分鐘。

無可否認,現在無論大廠還是小廠都已經用上了 Vue.js 框架,簡單易上手不說,教程詳盡,社區活躍,第三方套件還多。

真的是前端開發人員必備技能。

而且在面試當中也往往會問到關于 Vue 方面的各種問題,其中大部分面試官會問到如上這種問題。

最近一直在做 Vue項目代碼層面上的優化,說實話,優化別人的代碼真是件痛苦的事情,功能實現尚且不說,就說代碼規范我就能再寫出一篇文章來。

真的是無規范不成方圓,規范這個東西太重要了!

有點扯了,回到主題,咳咳,那就談談我對上面的面試題的理解吧,文筆有限,不妥之處,歡迎在文章結尾留言斧正啊,正啊,啊!

概述

幾種通信方式無外乎以下幾種:

  • Prop(常用)
  • $emit (組件封裝用的較多)
  • .sync語法糖 (較少)
  • $attrs 和 $listeners (組件封裝用的較多)
  • provide 和 inject (高階組件/組件庫用的較多)
  • 其他方式通信

詳述

下面逐個介紹,大神請繞行。

1. Prop

英式發音:[prɒp]。

這個在我們日常開發當中用到的非常多。

簡單來說,我們可以通過 Prop 向子組件傳遞數據。

用一個形象的比喻來說,父子組件之間的數據傳遞相當于自上而下的下水管子,只能從上往下流,不能逆流。

這也正是 Vue 的設計理念之單向數據流。

而 Prop 正是管道與管道之間的一個銜接口,這樣水(數據)才能往下流。說這么多,看代碼:

  1. <div id="app">  <child :content="message"></child></div> 
  2. // Js 
  3. let Child = Vue.extend({ 
  4.   template: '<h2>{{ content }}</h2>'
  5.   props: { 
  6.     content: { 
  7.       type: String, 
  8.       default: () => { return 'from child' } 
  9.     } 
  10.   } 
  11. }) 
  12.  
  13. new Vue({ 
  14.   el: '#app'
  15.   data: { 
  16.     message: 'from parent' 
  17.   }, 
  18.   components: { 
  19.     Child 
  20.   } 
  21. }) 

 

 

 

瀏覽器輸出:

  1. from parent 

2. $emit

英式發音:[iˈmɪt]。

官方說法是觸發當前實例上的事件。

附加參數都會傳給監聽器回調。

按照我的理解不知道能不能給大家說明白,先簡單看下代碼吧:

  1. <div id="app">  <my-button @greet="sayHi"></my-button></div> 
  2. let MyButton = Vue.extend({ 
  3.   template: '<button @click="triggerClick">click</button>'
  4.   data () { 
  5.     return { 
  6.       greeting: 'vue.js!' 
  7.     } 
  8.   }, 
  9.   methods: { 
  10.     triggerClick () { 
  11.       this.$emit('greet', this.greeting) 
  12.     } 
  13.   } 
  14. }) 
  15.  
  16. new Vue({ 
  17.   el: '#app'
  18.   components: { 
  19.     MyButton 
  20.   }, 
  21.   methods: { 
  22.     sayHi (val) { 
  23.       alert('Hi, ' + val) // 'Hi, vue.js!' 
  24.     } 
  25.   } 
  26. }) 

 

大致邏輯是醬嬸兒的:當我在頁面上點擊按鈕時,觸發了組件 MyButton 上的監聽事件 greet,并且把參數傳給了回調函數 sayHi 。

說白了,當我們從子組件 Emit(派發) 一個事件之前,其內部都提前在事件隊列中 On(監聽)了這個事件及其監聽回調。其實相當于下面這種寫法:

  1. vm.$on('greet'function sayHi (val) {  console.log('Hi, ' + val)})vm.$emit('greet''vue.js')// => "Hi, vue.js" 

3. .sync 修飾符

這個家伙在 vue@1.x 的時候曾作為雙向綁定功能存在,即子組件可以修改父組件中的值。

因為它違反了單向數據流的設計理念,所以在 vue@2.0 的時候被干掉了。

但是在 vue@2.3.0+ 以上版本又重新引入了這個 .sync 修飾符。

但是這次它只是作為一個編譯時的語法糖存在。

它會被擴展為一個自動更新父組件屬性的 v-on 監聽器。

說白了就是讓我們手動進行更新父組件中的值了,從而使數據改動來源更加的明顯。

下面引入自官方的一段話:

在有些情況下,我們可能需要對一個 prop 進行“雙向綁定”。

不幸的是,真正的雙向綁定會帶來維護上的問題,因為子組件可以修改父組件,且在父組件和子組件都沒有明顯的改動來源。

既然作為一個語法糖,肯定是某種寫法的簡寫形式,哪種寫法呢,看代碼:

  1. <text-document  v-bind:title="doc.title"  v-on:update:title="doc.title = $event"></text-document> 

于是我們可以用 .sync 語法糖簡寫成如下形式:

  1. <text-document v-bind:title.sync="doc.title"></text-document> 

廢話這么多,如何做到“雙向綁定” 呢?

讓我們進段廣告,廣告之后更加精彩!

... 好的,歡迎回來。

假如我們想實現這樣一個效果:改變子組件文本框中的值同時改變父組件中的值。

怎么做?列位不妨先想想。先看段代碼:

  1. <div id="app">  <login :name.sync="userName"></login> {{ userName }}</div> 
  2. let Login = Vue.extend({ 
  3.   template: ` 
  4.     <div class="input-group"
  5.       <label>姓名:</label> 
  6.       <input v-model="text"
  7.     </div> 
  8.   `, 
  9.   props: ['name'], 
  10.   data () { 
  11.     return { 
  12.       text: '' 
  13.     } 
  14.   }, 
  15.   watch: { 
  16.     text (newVal) { 
  17.       this.$emit('update:name', newVal) 
  18.     } 
  19.   } 
  20. }) 
  21.  
  22. new Vue({ 
  23.   el: '#app'
  24.   data: { 
  25.     userName: '' 
  26.   }, 
  27.   components: { 
  28.     Login 
  29.   } 
  30. }) 

 

下面劃重點,代碼里有這一句話:

  1. this.$emit('update:name', newVal) 

官方語法是:update:myPropName 其中 myPropName 表示要更新的 prop 值。

當然如果你不用 .sync 語法糖使用上面的 .$emit 也能達到同樣的效果。僅此而已!

4. $attrs 和 $listeners

  • 官網對 $attrs 的解釋如下:

包含了父作用域中不作為 prop 被識別 (且獲取) 的特性綁定 (class 和 style 除外)。

當一個組件沒有聲明任何 prop 時,這里會包含所有父作用域的綁定 (class 和 style 除外),并且可以通過 v-bind="$attrs" 傳入內部組件——在創建高級別的組件時非常有用。

  • 官網對 $listeners 的解釋如下:

包含了父作用域中的 (不含 .native 修飾器的) v-on 事件監聽器。

它可以通過 v-on="$listeners" 傳入內部組件——在創建更高層次的組件時非常有用。

我覺得 $attrs 和 $listeners 屬性像兩個收納箱,一個負責收納屬性,一個負責收納事件,都是以對象的形式來保存數據。

看下面的代碼解釋:

  1. <div id="app">  <child    :foo="foo"    :bar="bar"    @one.native="triggerOne"    @two="triggerTwo">  </child></div> 

 

 

從 Html 中可以看到,這里有倆屬性和倆方法,區別是屬性一個是 prop 聲明,事件一個是 .native 修飾器。

  1. let Child = Vue.extend({ 
  2.   template: '<h2>{{ foo }}</h2>'
  3.   props: ['foo'], 
  4.   created () { 
  5.     console.log(this.$attrs, this.$listeners) 
  6.     // -> {bar: "parent bar"
  7.     // -> {two: fn} 
  8.  
  9.  
  10.     // 這里我們訪問父組件中的 `triggerTwo` 方法 
  11.     this.$listeners.two() 
  12.     // -> 'two' 
  13.   } 
  14. }) 
  15.  
  16. new Vue({ 
  17.   el: '#app'
  18.   data: { 
  19.     foo: 'parent foo'
  20.     bar: 'parent bar' 
  21.   }, 
  22.   components: { 
  23.     Child 
  24.   }, 
  25.   methods: { 
  26.       triggerOne () { 
  27.       alert('one'
  28.     }, 
  29.     triggerTwo () { 
  30.       alert('two'
  31.     } 
  32.   } 
  33. }) 

 

 

可以看到,我們可以通過 $attrs 和 $listeners 進行數據傳遞,在需要的地方進行調用和處理,還是很方便的。

當然,我們還可以通過 v-on="$listeners" 一級級的往下傳遞,子子孫孫無窮盡也!

一個插曲!

當我們在組件上賦予了一個非Prop 聲明時,編譯之后的代碼會把這些個屬性都當成原始屬性對待,添加到 html 原生標簽上,看上面的代碼編譯之后的樣子:

  1. <h2 bar="parent bar">parent foo</h2> 

 

這樣會很難看,同時也爆了某些東西。

如何去掉?

這正是 inheritAttrs 屬性的用武之地!

給組件加上這個屬性就行了,一般是配合 $attrs 使用。

看代碼:

  1. // 源碼let Child = Vue.extend({  ...  inheritAttrs: false, // 默認是 true  ...}) 

再次編譯:

  1. <h2>parent foo</h2> 

 

5. provide / inject

他倆是對CP, 感覺挺神秘的。

來看下官方對 provide / inject 的描述:

provide 和 inject 主要為高階插件/組件庫提供用例。

并不推薦直接用于應用程序代碼中。

并且這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關系成立的時間里始終生效。

看完描述有點懵懵懂懂!

一句話總結就是:小時候你老爸什么東西都先幫你存著等你長大該娶媳婦兒了你要房子給你買要車給你買只要他有的盡量都會滿足你。

下面是這句話的代碼解釋:

  1. <div id="app">  <son></son></div> 
  2. let Son = Vue.extend({ 
  3.   template: '<h2>son</h2>'
  4.   inject: { 
  5.     house: { 
  6.       default'沒房' 
  7.     }, 
  8.     car: { 
  9.       default'沒車' 
  10.     }, 
  11.     money: { 
  12.       // 長大工作了雖然有點錢 
  13.       // 僅供生活費,需要向父母要 
  14.       default'¥4500' 
  15.     } 
  16.   }, 
  17.   created () { 
  18.     console.log(this.house, this.car, this.money) 
  19.     // -> '房子''車子''¥10000' 
  20.   } 
  21. }) 
  22.  
  23. new Vue({ 
  24.   el: '#app'
  25.   provide: { 
  26.     house: '房子'
  27.     car: '車子'
  28.     money: '¥10000' 
  29.   }, 
  30.  
  31.   components: { 
  32.     Son 
  33.   } 
  34. }) 

 

6. 其他方式通信

除了以上五種方式外,其實還有:

  • EventBus

思路就是聲明一個全局Vue實例變量 EventBus , 把所有的通信數據,事件監聽都存儲到這個變量上。

這樣就達到在組件間數據共享了,有點類似于 Vuex。

但這種方式只適用于極小的項目,復雜項目還是推薦 Vuex。

下面是實現 EventBus 的簡單代碼:

  •  
  1. <div id="app">  <child></child></div> 
  2. // 全局變量 
  3. let EventBus = new Vue() 
  4.  
  5. // 子組件 
  6. let Child = Vue.extend({ 
  7.   template: '<h2>child</h2>'
  8.   created () { 
  9.     console.log(EventBus.message) 
  10.     // -> 'hello' 
  11.     EventBus.$emit('received''from child'
  12.   } 
  13. }) 
  14.  
  15. new Vue({ 
  16.   el: '#app'
  17.   components: { 
  18.     Child 
  19.   }, 
  20.   created () { 
  21.     // 變量保存 
  22.     EventBus.message = 'hello' 
  23.     // 事件監聽 
  24.     EventBus.$on('received'function (val) { 
  25.       console.log('received: '+ val) 
  26.       // -> 'received: from child' 
  27.     }) 
  28.   } 
  29. }) 

 

 

  • Vuex

官方推薦的,Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。

  • $parent

父實例,如果當前實例有的話。

通過訪問父實例也能進行數據之間的交互,但極小情況下會直接修改父組件中的數據。

  • $root

當前組件樹的根 Vue 實例。

如果當前實例沒有父實例,此實例將會是其自己。

通過訪問根組件也能進行數據之間的交互,但極小情況下會直接修改父組件中的數據。

  • broadcast / dispatch

他倆是 vue@1.0 中的方法,分別是事件廣播 和 事件派發。

雖然 vue@2.0 里面刪掉了,但可以模擬這兩個方法。

可以借鑒 Element 實現。

有時候還是非常有用的,比如我們在開發樹形組件的時候等等。

總結

啰嗦了這么多,希望看到的同學或多或少有點收獲吧。

不對的地方還請留言指正,不勝感激。

父子組件間的通信其實有很多種,就看你在哪些情況下去用。

不同場景不同對待。

前提是你要心中有數才行!

通過大神之路還有很遠,只要每天看看社區,看看文檔,寫寫Demo,每天進步一點點,總會有收獲的。

責任編輯:武曉燕 來源: 前端大牛愛好者
相關推薦

2024-01-09 08:34:56

Vue3.js組件通信

2019-11-27 15:30:32

人工智能機器人技術

2017-06-30 08:51:12

組件模板勒索軟件項目管理

2018-12-04 21:05:51

2022-06-15 10:44:12

通貨膨脹IT

2011-12-21 21:16:58

2020-09-12 16:22:27

Vue

2019-08-14 10:00:08

vue組件通信前端

2019-04-10 08:24:06

vue組件通信

2021-09-15 08:09:43

前端技術編程

2020-09-16 06:12:30

Vue.js 3.0Suspense組件前端

2017-07-11 18:00:21

vue.js數據組件

2014-12-12 10:29:28

SaaS云服務

2022-07-15 08:48:07

IT通貨膨脹IT支出

2021-11-11 14:31:11

大數據人工智能

2022-08-26 16:44:40

智慧城市AI人工智能

2020-11-26 20:54:23

AI人工智能建筑

2017-12-11 16:25:25

2017-07-03 16:03:49

IT技術周刊

2020-03-17 12:00:06

人工智能數據科學新冠病毒
點贊
收藏

51CTO技術棧公眾號

夫妻av一区二区| 亚洲成人精品| 欧美日韩国产片| 超碰97免费观看| 午夜福利视频一区二区| 美女视频一区二区| 韩剧1988免费观看全集| 精品无码在线观看| 97青娱国产盛宴精品视频| 在线看日本不卡| www污在线观看| av在线电影院| 成人看片黄a免费看在线| 国产精品久久久久不卡| 日韩免费视频网站| 91精品综合| 亚洲香蕉av在线一区二区三区| 免费在线观看日韩av| 国产精品专区免费| 亚洲成人激情综合网| 一本久道久久综合| 毛片免费在线| 成人av网在线| 亚洲一区二区三区四区视频| www.亚洲激情| 国产欧美午夜| 久久久在线免费观看| 手机av在线看| 欧美久久综合网| 亚洲精品二三区| 99国产精品免费视频| 国产第一精品| 色综合天天做天天爱| 国产玉足脚交久久欧美| 婷婷在线播放| 亚洲码国产岛国毛片在线| 亚洲欧洲精品一区| wwwxxx在线观看| 久久影院电视剧免费观看| 国产精品露出视频| 亚洲春色一区二区三区| 国产精品一二三四| 91网免费观看| 国产草草影院ccyycom| 精品一区二区三区免费视频| 国产精品精品视频| 成人黄色片在线观看| 三级久久三级久久久| 人九九综合九九宗合| 国产无套丰满白嫩对白| 午夜一级久久| 国产成人精品亚洲精品| 真实的国产乱xxxx在线91| 老鸭窝91久久精品色噜噜导演| 欧美在线视频免费播放| 日韩熟女一区二区| 免费人成黄页网站在线一区二区| 国产精品日韩av| 中文字幕欧美在线观看| 精品在线播放免费| 亚洲综合国产精品| 黄色www视频| 91亚洲精品一区二区乱码| 久久久久国产精品视频| 国产日产精品久久久久久婷婷| 国产欧美日韩在线看| 一区二区三区国产福利| a级在线观看| 亚洲成人av免费| 99精品在线免费视频| 欧洲精品一区二区三区| 欧美三级韩国三级日本三斤 | 欧美aa一级| 黑人巨大精品欧美一区二区一视频 | wwwxxx在线观看| 亚洲欧美色图小说| 欧洲精品一区二区三区久久| 中文字幕在线高清| 欧美日韩第一区日日骚| 人妻av一区二区三区| 欧美美女在线直播| 一区二区欧美久久| 污软件在线观看| 亚洲国产精品第一区二区三区| 国产98色在线| 国产精品嫩草影院桃色| 99视频国产精品| 午夜精品亚洲一区二区三区嫩草| 在线观看小视频| 岛国av午夜精品| 国产精品区在线| 成人av动漫| 中文字幕国内精品| 久久视频免费在线观看| 欧美a级理论片| 国产 高清 精品 在线 a| 四虎精品成人免费网站| 亚洲欧洲成人av每日更新| 18禁网站免费无遮挡无码中文| av成人免费看| 日韩精品极品视频免费观看| 一区二区三区在线播放视频| 夜夜嗨一区二区| 91天堂在线观看| 日本在线一二三| 亚洲综合丝袜美腿| 污污网站免费观看| 欧美a级网站| 欧美另类xxx| 最新在线中文字幕| 99这里只有精品| 青青草原国产免费| 裤袜国产欧美精品一区| 精品少妇一区二区| 一级黄色片日本| 天堂va蜜桃一区二区三区漫画版| 国产亚洲情侣一区二区无| caoporn97在线视频| 欧美视频中文字幕| 中文字幕5566| 狠狠色丁香久久综合频道| 国产精品一区久久| 国产毛片av在线| 日韩欧美成人精品| 中文字幕a在线观看| 国产精品vip| 91免费版网站入口| 日本电影全部在线观看网站视频| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲欧美日韩电影| 亚洲成人av免费看| 国产欧美日韩| 欧美一级高清免费| 亚洲av成人精品毛片| 亚洲一区在线视频| 天堂va欧美va亚洲va老司机| 91成人免费| 亚洲自拍偷拍区| 国产激情小视频在线| 欧美裸体bbwbbwbbw| 天堂网av2018| 久久狠狠亚洲综合| youjizz.com亚洲| 日韩福利影视| 久久九九精品99国产精品| 91精品国产乱码久久久| 国产精品久久久久久久岛一牛影视 | 国产麻豆视频在线观看| 久久精品国产免费看久久精品| 亚洲成人a**址| 欧美激情不卡| 久久精品99久久久香蕉| 国产片高清在线观看| 亚洲摸摸操操av| 折磨小男生性器羞耻的故事| 激情欧美国产欧美| 久久99精品久久久久久水蜜桃| 国产网站在线| 亚洲女人被黑人巨大进入| 四虎影院在线免费播放| 国产精品午夜在线观看| 九九热精品在线播放| 亚洲午夜精品一区 二区 三区| 亚洲最大成人在线| 国产乱妇乱子在线播视频播放网站| 亚洲国产日韩欧美综合久久| 国产成人无码av| 国产精品天美传媒| 久久出品必属精品| 激情欧美一区| 日韩久久在线| 高清一区二区中文字幕| 午夜精品蜜臀一区二区三区免费| 欧洲亚洲在线| 7777精品伊人久久久大香线蕉超级流畅| 一级片一级片一级片| 成人毛片在线观看| 国产免费又粗又猛又爽| 欧美成人综合| 美乳视频一区二区| 伊人国产精品| 97av视频在线| 青青影院在线观看| 精品sm在线观看| 夜夜爽妓女8888视频免费观看| 日韩一区在线看| 欧美深性狂猛ⅹxxx深喉| 免费在线观看日韩欧美| 800av在线免费观看| 国产探花在线精品| **亚洲第一综合导航网站| 丝袜诱惑一区二区| 久久视频在线观看免费| 亚洲av激情无码专区在线播放| 欧美日韩精品欧美日韩精品 | 欧美videossex| 亚洲日韩欧美视频| 亚洲乱码在线观看| 欧洲一区二区三区在线| 久久久久久免费观看| 中文字幕不卡在线观看| 亚洲少妇18p| 国产在线一区观看| 男人搞女人网站| 亚洲福利专区| 懂色av粉嫩av蜜臀av| 中文字幕伦av一区二区邻居| 成人av男人的天堂| 四虎精品永久免费| 国产精品电影观看| av最新在线| 九九热在线精品视频| 成人av毛片| 精品亚洲aⅴ在线观看| www.日本在线观看| 欧美猛男gaygay网站| 日本中文字幕在线观看视频| 亚洲成人综合视频| 精国产品一区二区三区a片| 国产精品久久久久7777按摩 | 99国产**精品****| 日韩亚洲视频在线| 亚洲裸色大胆大尺寸艺术写真| 成人欧美一区二区| 色悠久久久久综合先锋影音下载| 国产精品美女在线观看| 国产超碰精品| 日本高清久久天堂| 日韩影院在线| 性欧美在线看片a免费观看| 黄色在线看片| 久久99久国产精品黄毛片入口| 18+激情视频在线| 久久精品91久久香蕉加勒比| 精产国品自在线www| 中文字幕日韩在线视频| 丝袜美腿美女被狂躁在线观看| 亚洲色图综合网| 国产人成在线观看| 一区二区欧美激情| 香蕉视频在线看| 日韩中文字幕视频| 午夜精品一区| 日韩中文字幕免费看| 快射视频在线观看| 欧美大尺度在线观看| 2020国产在线视频| 欧美风情在线观看| 国产啊啊啊视频在线观看| 久久久久久久国产| 99riav视频在线观看| 亚洲91av视频| 成人性生活av| 国产精品网红福利| 91视频亚洲| 成人免费91在线看| 欧美日韩一区二区三区不卡视频| 久久久综合亚洲91久久98| 亚洲人亚洲人色久| 日韩免费av电影| 久久精品青草| 人妻激情另类乱人伦人妻| 亚洲免费播放| 久久黄色免费看| 韩国一区二区视频| 亚洲av永久无码精品| 国产网站一区二区三区| 日韩欧美国产成人精品免费| 亚洲成人综合视频| 波多野结衣激情视频| 欧美另类变人与禽xxxxx| 99久久婷婷国产一区二区三区| 精品国产一区a| 欧美性孕妇孕交| www.日韩不卡电影av| 欧美xxxx少妇| 国产精品露脸av在线| 国产美女精品视频免费播放软件| 国产一区精品在线| 第一社区sis001原创亚洲| 一二三在线视频| 欧美亚洲在线| 一级做a爱视频| 久久亚洲精品小早川怜子| 亚洲一级片在线播放| 亚洲午夜av在线| 性高潮视频在线观看| 欧美刺激脚交jootjob| 麻豆app在线观看| 萌白酱国产一区二区| 欧美极品影院| 99re6在线| 欧美精品尤物在线观看| h无码动漫在线观看| 日本不卡一二三区黄网| 亚洲激情 欧美| 成人欧美一区二区三区在线播放| 在线观看免费国产视频| 欧美精品 国产精品| 色视频在线看| 久久99久久99精品中文字幕 | 五月花成人网| 国产女人18毛片水18精品| 丝袜连裤袜欧美激情日韩| 四虎影院一区二区| 久久国产毛片| 精品人妻一区二区三区日产| 日韩理论片网站| 99re热视频| 亚洲精品久久久久中文字幕二区 | 亚洲精品mv在线观看| 91美女蜜桃在线| 欧美精品久久久久性色| 欧美日韩精品欧美日韩精品一综合| 欧美色视频免费| 97碰碰碰免费色视频| 欧美日韩黄色| 亚洲一区二区三区精品在线观看| 爽好久久久欧美精品| 久久人人爽人人爽人人片| 亚洲高清视频的网址| av一级黄色片| xvideos国产精品| 天堂综合在线播放| 亚洲欧洲日韩精品| 丝瓜av网站精品一区二区| 中文字幕高清视频| 精品欧美aⅴ在线网站| 天天干视频在线观看| 国内精品久久久久影院 日本资源| 一本一道久久a久久| 中国女人做爰视频| 国产精品夜夜嗨| 欧美卡一卡二卡三| 日韩午夜小视频| gogo在线高清视频| 99电影网电视剧在线观看| 91精品99| 无码人妻丰满熟妇区毛片蜜桃精品 | 亚洲第一视频网站| www中文字幕在线观看| 国产精品久久精品视| 精品电影一区| 国产a级黄色片| 精品久久久免费| 欧美日韩伦理片| 国产精品久久av| 久久在线播放| 97超碰免费在线观看| 亚洲韩国一区二区三区| 天堂av在线资源| 日韩av123| 成人在线亚洲| 91精品国产三级| 亚洲午夜久久久久久久久电影网| 亚洲精品成人电影| 45www国产精品网站| 久久不见久久见免费视频7| 美女喷白浆视频| 中文字幕综合网| 亚洲精品人妻无码| 91精品国产色综合久久不卡98口| 久操国产精品| 亚洲一级片av| 亚洲成人av一区二区| 国产午夜视频在线观看| 成人国产精品久久久| 欧美日韩精品| 深爱五月激情网| 欧美日韩亚洲不卡| 欧美性猛片xxxxx免费中国| 国产乱子伦精品| 日本在线不卡视频| 黄色一级片中国| 亚洲欧美国产高清va在线播| 国语自产精品视频在线看抢先版结局| 精品一区二区三区毛片| 26uuuu精品一区二区| 中文字幕人妻精品一区| 欧美激情中文字幕在线| 九九亚洲视频| 国产精品嫩草影视| 欧美日韩亚洲网| www在线观看播放免费视频日本| 国产在线观看一区| 另类专区欧美蜜桃臀第一页| 18精品爽视频在线观看| 国产亚洲aⅴaaaaaa毛片| 亚洲综合网站| 少妇一级淫免费放| 午夜精品久久一牛影视| 亚洲搞黄视频| 久久99精品久久久久久青青日本| 国产真实乱偷精品视频免| 性色av免费观看| 久久久久成人精品| 国产精品99久久精品| 日本xxxx裸体xxxx| 欧美一区二区二区| 成人午夜在线|