精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产一区二区久久久| 亚洲视频999| 蜜臀av性久久久久蜜臀av| 国产99久一区二区三区a片| 在线播放亚洲| 综合国产在线观看| 日批视频在线看| 天堂av在线| 最新日韩av在线| 狠狠综合久久av| 夜夜躁狠狠躁日日躁av| 99人久久精品视频最新地址| 亚洲无av在线中文字幕| 伊人成人免费视频| 免费成人直播| 亚洲精品视频一区| 国产精品久久久久久久久免费桃花| 精品偷拍各种wc美女嘘嘘| 爱情岛论坛vip永久入口| 日皮视频在线观看| 日本一区免费视频| 精品视频导航| 性欧美videos另类hd| 蜜臀av性久久久久蜜臀aⅴ| 久久久久久久久久久人体 | 国产成人精品www牛牛影视| 日本人成精品视频在线| 久久久久黄色片| 99久久.com| 亚洲一级黄色片| 日本黄色动态图| 国产一区二区三区免费观看在线 | 欧美国产在线电影| 欧美激情久久久久久久| 三级精品视频| 亚洲精品xxxx| 高清中文字幕mv的电影| 久久亚洲精精品中文字幕| 欧美亚洲国产怡红院影院| 六月丁香激情网| heyzo高清中文字幕在线| 亚洲人123区| 亚洲欧洲日韩精品| 黄色在线网站| 91蜜桃免费观看视频| 国产日韩精品推荐| 亚洲h视频在线观看| 国产精品一级在线| 亚洲综合日韩中文字幕v在线| 在线观看毛片网站| 免费看欧美美女黄的网站| 国产精品69久久| 欧美日韩一级黄色片| 亚洲欧美激情诱惑| 国产91精品久久久久久| 在线观看黄网站| 亚洲一区视频| 91国产高清在线| 久久久午夜影院| 国产精品婷婷| 日本欧美一级片| 无码人妻一区二区三区线| 老司机亚洲精品| 国产成人精品综合| 自拍偷拍色综合| 美国三级日本三级久久99| 国产精品视频久久久| 中文字幕一区2区3区| 精品一区二区在线观看| 成人国产精品久久久| 99精品人妻无码专区在线视频区| 国产成人小视频| 国产精品制服诱惑| 三区在线观看| 亚洲国产精品精华液ab| 久久av秘一区二区三区| 男人天堂亚洲天堂| 懂色av影视一区二区三区| 日韩欧美xxxx| 成人在线分类| 亚洲成人精品视频| 女~淫辱の触手3d动漫| 青青草成人影院| 欧美大奶子在线| www..com国产| 日韩电影在线一区| 91|九色|视频| 三级无遮挡在线观看| 中文字幕一区视频| 欧美精品久久久久久久自慰| 久久精品女人天堂av免费观看| 欧美综合一区二区| 日本女人黄色片| 香蕉视频一区| 久久亚洲精品网站| 五月婷婷激情网| 蜜桃一区二区三区四区| 国产91视觉| 国产大学生校花援交在线播放| 亚洲特黄一级片| 欧美三级一级片| 国产欧美视频在线| 亚洲男人av在线| 国产高潮国产高潮久久久91 | 中文字幕一区在线| 青娱乐自拍偷拍| 亚洲精品自拍| 日韩成人激情在线| 91av手机在线| 免费视频一区二区三区在线观看| 91亚洲一区精品| 免费av在线电影| 亚洲一区二区视频在线| 色一情一区二区| 米奇777超碰欧美日韩亚洲| 久久成人亚洲精品| 中文字幕在线观看高清| 97久久精品人人做人人爽50路| 91社在线播放| 日韩经典一区| 亚洲精品天天看| 久久精品国产亚洲av麻豆色欲| 男女性色大片免费观看一区二区| 久久国产主播精品| 日本大片在线播放| 欧美电影在线免费观看| 蜜桃av免费看| 性欧美长视频| 精品久久久久久乱码天堂| 在线电影福利片| 欧美精品 日韩| 日本黄色激情视频| 日韩在线观看一区二区| 精品产品国产在线不卡| www555久久| 日韩亚洲欧美在线| 免费在线黄色网| 精品在线免费视频| 亚洲制服中文| 成人在线视频免费| 中文字幕亚洲一区二区三区| 日韩精品久久久久久免费| 不卡一二三区首页| 日韩美女爱爱视频| 超碰一区二区三区| 欧美国产第二页| 国产suv精品一区二区69| 亚洲欧美怡红院| 制服丝袜中文字幕第一页| 欧美aaaa视频| 成人欧美在线观看| 超碰在线caoporn| 欧美一区二区视频观看视频| 日韩va亚洲va欧美va清高| 麻豆成人久久精品二区三区红| 亚欧洲精品在线视频免费观看| 欧美动物xxx| 国产一区二区三区在线视频| 国产情侣呻吟对白高潮| 国产精品久久久久婷婷二区次| 欧美精品aaaa| 婷婷亚洲最大| 成人动漫视频在线观看完整版| 国产桃色电影在线播放| 日韩精品高清在线| 中文字幕一区二区人妻视频| 中文字幕免费不卡| 亚洲成人手机在线观看| 欧美日韩国产一区精品一区| 国产日本一区二区三区| 欧美无毛视频| 日韩视频在线观看免费| 性欧美8khd高清极品| 精品久久久久久久久国产字幕 | 欧美国产精品人人做人人爱| 欧美一级免费片| 色综合久久中文字幕| 四季av中文字幕| 国产精品一级二级三级| 日本午夜激情视频| 国产午夜一区| 亚洲综合中文字幕68页| 麻豆网站免费在线观看| 伊人久久免费视频| 国产福利免费视频| 欧美日韩一区二区免费在线观看| 伊人网在线视频观看| 国产中文字幕一区| 久久成人免费观看| 手机在线电影一区| 国产一区二区三区色淫影院| 高清av一区二区三区| 欧美高清激情视频| 免费在线黄色电影| 日韩一区二区三区在线视频| 在线观看免费av片| 亚洲精品免费在线播放| 国产三级国产精品| 九九热在线视频观看这里只有精品| 日韩精品一区二区在线视频 | 国产在线日韩欧美| 免费国产a级片| 国产精品不卡| 欧美三级网色| 99精品国产一区二区三区2021| 国产大片精品免费永久看nba| 性欧美高清come| 夜夜嗨av一区二区三区四区| 天堂在线视频观看| 制服.丝袜.亚洲.另类.中文| 久久精品无码av| 亚洲一区二区在线视频| 国产日韩精品中文字无码| 99麻豆久久久国产精品免费优播| 日韩av.com| 日韩高清在线不卡| av之家在线观看| 国产精品porn| 亚洲一区高清| 欧美日中文字幕| 精品乱码一区二区三区| 亚洲日本视频在线| 成人写真视频福利网| 欧美色999| 奇米影视亚洲狠狠色| 伦理在线一区| 色综合久久88色综合天天看泰| sese在线视频| 国产一区二区三区丝袜 | 日本在线一区二区三区| 国产有码在线一区二区视频| 999国产精品亚洲77777| 7m第一福利500精品视频| 日本理论片午伦夜理片在线观看| 久久精品在线播放| √天堂资源地址在线官网| 亚洲欧美另类人妖| 日本一二三区在线视频| 日韩精品中文字| 婷婷视频在线观看| 亚洲精品xxx| 天天摸天天碰天天爽天天弄| 精品成人a区在线观看| 亚洲国产精品久久久久爰性色| 欧美一区二区高清| 国产一区二区在线不卡| 欧美日韩国产中文| 97精品久久人人爽人人爽| 欧美日韩专区在线| 这里只有精品999| 欧美日韩精品一区二区天天拍小说| 欧美特级黄色片| 欧美日韩中文国产| 一级成人免费视频| 欧美一区二区久久久| av片免费播放| 精品国产一区二区国模嫣然| 嫩草影院一区二区| 日韩精品亚洲视频| 岛国视频免费在线观看| 国产一区二区三区在线视频| 日本在线视频站| 欧美成人午夜激情| a级片免费在线观看| 555www成人网| 欧美韩国亚洲| 成人一区二区电影| 综合伊人久久| 欧美亚洲一级二级| 99久久婷婷这里只有精品| av磁力番号网| 亚洲精品极品| 亚洲乱码国产一区三区| 九九国产精品视频| 最新国产精品自拍| 久久综合狠狠综合久久综合88| 老头老太做爰xxx视频| 亚洲欧美自拍偷拍色图| 久久亚洲成人av| 精品成人在线视频| 影音先锋国产在线| 日韩精品中文字幕在线不卡尤物| 天天综合永久入口| 中文字幕亚洲情99在线| 亚洲综合影视| 欧美最猛性xxxxx亚洲精品| 欧美一区 二区 三区| 亚洲xxxx在线| 中文精品一区二区| 免费看黄色a级片| 亚洲影视在线| 一级做a爱视频| 91免费版在线看| 欧美黄色免费看| 日本久久电影网| 风流少妇一区二区三区91| 亚洲人成在线观看网站高清| √天堂8在线网| 国产精品福利在线观看网址| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 亚洲精品自在久久| 国产一二区在线| 日本亚洲欧美三级| 91久久精品无嫩草影院| 日韩av在线电影观看| 悠悠资源网久久精品| 怡红院亚洲色图| 久久免费视频色| 国产亚洲第一页| 欧美精品乱码久久久久久按摩| 香蕉久久一区二区三区| 欧美精品少妇videofree| 成人a在线观看高清电影| 含羞草久久爱69一区| 女主播福利一区| 国产高清视频网站| 久久天天做天天爱综合色| 国产小视频在线看| 欧美另类高清zo欧美| 国产黄在线看| 日本中文字幕久久看| 国产亚洲成av人片在线观黄桃| 中文字幕在线乱| 麻豆精品一二三| 免费看日本黄色片| 日韩欧美中文免费| 色丁香婷婷综合久久| 欧美高清视频在线播放| 国产免费区一区二区三视频免费| 亚洲永久激情精品| 免费的成人av| av永久免费观看| 色天使久久综合网天天| 青青青手机在线视频观看| 午夜精品在线视频| 国产精品午夜av| 日本阿v视频在线观看| 国产黄色精品视频| 精国产品一区二区三区a片| 91精品国产综合久久久蜜臀粉嫩| 3p视频在线观看| 国产欧亚日韩视频| 99久久99久久精品国产片桃花| 黑人粗进入欧美aaaaa| 久久精品亚洲麻豆av一区二区| 特级毛片www| 亚洲人在线视频| 欧美大片免费观看网址| 日韩尤物视频| 蜜桃久久久久久| √天堂中文官网8在线| 91精品黄色片免费大全| 日本动漫理论片在线观看网站| 99久久伊人精品影院| 亚洲香蕉网站| 日本一级片在线播放| 黑人巨大精品欧美一区免费视频 | 日本中文字幕网址| www.av精品| 狠狠人妻久久久久久| 尤物yw午夜国产精品视频明星| 欧美影视资讯| 中文有码久久| 粉嫩在线一区二区三区视频| 国产成人无码精品亚洲| 亚洲男人天堂网| 色999韩欧美国产综合俺来也| 51xx午夜影福利| av中文字幕一区| 超碰在线免费97| 久久伊人精品一区二区三区| 一区二区免费| 91免费视频网站在线观看| 国产欧美日韩麻豆91| 91禁在线观看| 久久露脸国产精品| 国产成人精品免费视| 亚洲一区日韩精品| 亚洲一区日韩精品中文字幕| 日色在线视频| 亚洲精品女av网站| 国产精品毛片| 成年人视频软件| 亚洲第一视频网| 国产一区二区主播在线| 日本天堂免费a| 久久新电视剧免费观看| 国产精品伦理一区| 国语对白做受69| 久久精品国产亚洲夜色av网站| 亚洲午夜精品在线观看| 色丁香久综合在线久综合在线观看 | 国产成人在线影院| 国产又黄又猛又粗又爽| 久久久精品久久| 国产精品午夜一区二区三区| 妖精视频在线观看| 日本精品一级二级| a级大胆欧美人体大胆666| 亚洲人久久久|