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

詳解vue組件的三大核心概念

原創
開發 前端
本文主要介紹屬性、事件和插槽這三個vue基礎概念、使用方法及其容易被忽略的一些重要細節。如果你閱讀別人寫的組件,也可以從這三個部分展開,它們可以幫助你快速了解一個組件的所有功能。

【51CTO.com原創稿件】前言

本文主要介紹屬性、事件和插槽這三個vue基礎概念、使用方法及其容易被忽略的一些重要細節。如果你閱讀別人寫的組件,也可以從這三個部分展開,它們可以幫助你快速了解一個組件的所有功能。

詳解vue組件三大核心概念

本文的代碼請猛戳github博客,紙上得來終覺淺,大家動手多敲敲代碼!

一、屬性

1.自定義屬性props

prop 定義了這個組件有哪些可配置的屬性,組件的核心功能也都是它來確定的。寫通用組件時,props 最好用對象的寫法,這樣可以針對每個屬性設置類型、默認值或自定義校驗屬性的值,這點在組件開發中很重要,然而很多人卻忽視,直接使用 props 的數組用法,這樣的組件往往是不嚴謹的。

  1. // 父組件  
  2.  <props name='屬性'  
  3.            :type='type'  
  4.            :is-visible="false"  
  5.            :on-change="handlePropChange"  
  6.            :list=[22,33,44]  
  7.            title="屬性Demo"  
  8.            class="test1"  
  9.            :class="['test2']"  
  10.            :style="{ marginTop: '20px' }" //注意:style 的優先級是要高于 style  
  11.            style="margin-top: 10px">  
  12.   </props>  
  13. // 子組件  
  14.   props: { 
  15.     name: String,  
  16.     type: {  
  17.    //從父級傳入的 type,它的值必須是指定的 'success''warning''danger'中的一個,如果傳入這三個以外的值,都會拋出一條警告  
  18.       validator: (value) => {  
  19.         return ['success''warning''danger'].includes(value)  
  20.       }  
  21.     }, 
  22.  
  23.     onChange: {  
  24.     //對于接收的數據,可以是各種數據類型,同樣也可以傳遞一個函數  
  25.       type: Function,  
  26.       default: () => { }  
  27.     },  
  28.     isVisible: {  
  29.       type: Boolean,  
  30.       defaultfalse  
  31.     },  
  32.     list: {  
  33.       type: Array,  
  34.       // 對象或數組默認值必須從一個工廠函數獲取  
  35.       default: () => []  
  36.     }  
  37.   } 

從上面的例子中,可以得出props 可以顯示定義一個或一個以上的數據,對于接收的數據,可以是各種數據類型,同樣也可以傳遞一個函數。

2.inheritAttrs

這是2.4.0 新增的一個API,默認情況下父作用域的不被認作 props 的特性綁定將會回退且作為普通的 HTML 特性應用在子組件的根元素上。可通過設置 inheritAttrs  false,這些默認行為將會被去掉。注意:這個選項不影響 class  style 綁定。 上個例子中,title屬性沒有在子組件中props中聲明,就會默認掛在子組件的根元素上,如下圖所示: 

3. dataprops區別

  • 相同點

兩者選項里都可以存放各種類型的數據,當行為操作改變時,所有行為操作所用到和模板所渲染的數據同時都會發生同步變化。

  • 不同點

data 被稱之為動態數據,在各自實例中,在任何情況下,我們都可以隨意改變它的數據類型和數據結構,不會被任何環境所影響。

props 被稱之為靜態數據,在各自實例中,一旦在初始化被定義好類型時,基于 Vue 是單向數據流,在數據傳遞時始終不能改變它的數據類型,而且不允許在子組件中直接操作傳遞過來的props數據,而是需要通過別的手段,改變傳遞源中的數據。至于如何改變,我們接下去詳細介紹。

4.單向數據流

這個概念出現在組件通信。props的數據都是通過父組件或者更高層級的組件數據或者字面量的方式進行傳遞的,不允許直接操作改變各自實例中的props數據,而是需要通過別的手段,改變傳遞源中的數據。那如果有時候我們想修改傳遞過來的prop,有哪些辦法呢?

  • 方法1:過渡到 data 選項中

在子組件的 data 中拷貝一份 prop,data 是可以修改的 。

  1. export default {  
  2.   props: {  
  3.     type: String  
  4.   }, 
  5.  
  6.   data () {  
  7.     return {  
  8.       currentType: this.type  
  9.     }  
  10.   }  

 data 選項里通過 currentType接收 propstype數據,相當于對 currentType= type進行一個賦值操作,不僅拿到了 currentType的數據,而且也可以改變 currentType數據。

  • 方法2:利用計算屬性        
  1. export default {  
  2.          props: {  
  3.           type: String  
  4.         }, 
  5.  
  6.         computed: {  
  7.           normalizedType: function () {  
  8.              return this.type.toUpperCase();  
  9.            }  
  10.          }  

以上兩種方法雖可以在子組件間接修改props的值,但如果子組件想修改數據并且同步更新到父組件,卻無濟于事。在一些情況下,我們可能會需要對一個 prop 進行『雙向綁定』,此時就推薦以下這兩種方法:

  • 方法3:使用.sync  
  1.  
  2. // 父組件 
  3. <template> 
  4.   <div class="hello"
  5.     <div> 
  6.       <p>父組件msg:{{ msg }}</p> 
  7.       <p>父組件數組:{{ arr }}</p> 
  8.     </div> 
  9.     <button @click="show = true">打開model框</button> 
  10.     <br /> 
  11.     <demo :show.sync="show" :msg.sync="msg" :arr="arr"></demo> 
  12.   </div> 
  13. </template> 
  14.  
  15. <script> 
  16. import Demo from "./demo.vue"
  17. export default { 
  18.   name"Hello"
  19.   components: { 
  20.     Demo 
  21.   }, 
  22.   data() { 
  23.     return { 
  24.       show: false
  25.       msg: "模擬一個model框"
  26.       arr: [1, 2, 3] 
  27.     }; 
  28.   } 
  29. }; 
  30. </script> 
  31.  
  32. // 子組件 
  33. <template> 
  34.   <div v-if="show" class="border"
  35.     <div>子組件msg:{{ msg }}</div> 
  36.     <div>子組件數組:{{ arr }}</div> 
  37.     <button @click="closeModel">關閉model框</button> 
  38.     <button @click="$emit('update:msg', '浪里行舟')"
  39.       改變文字 
  40.     </button> 
  41.     <button @click="arr.push('前端工匠')">改變數組</button>  
  42.   </div> 
  43. </template> 
  44. <script> 
  45. export default { 
  46.   props: { 
  47.     msg: { 
  48.       type: String 
  49.     }, 
  50.     show: { 
  51.       type: Boolean 
  52.     }, 
  53.     arr: { 
  54.       type: Array //在子組件中改變傳遞過來數組將會影響到父組件的狀態 
  55.     } 
  56.   }, 
  57.   methods: { 
  58.     closeModel() { 
  59.       this.$emit("update:show"false); 
  60.     } 
  61.   } 
  62. }; 
  63.  
  64. ![props.gif](https://upload-images.jianshu.io/upload_images/3174701-389fadc8b85b4661.gif?imageMogr2/auto-orient/strip) 

父組件向子組件 props 里傳遞了 msg 和 show 兩個值,都用了.sync 修飾符,進行雙向綁定。

  • 方法4:將父組件中的數據包裝成對象傳遞給子組件

這是因為在 JavaScript 中對象和數組是通過引用傳入的,所以對于一個數組或對象類型的 prop 來說,在子組件中改變這個對象或數組本身將會影響到父組件的狀態。比如上例中在子組件中修改父組件傳遞過來的數組arr,從而改變父組件的狀態。

5.向子組件中傳遞數據時加和不加 v-bind?

對于字面量語法和動態語法,初學者可能在父組件模板中向子組件中傳遞數據時到底加和不加 v-bind 會感覺迷惑。 

  1. v-bind:msg = 'msg' 

這是通過 v-bind 進行傳遞數據并且傳遞的數據并不是一個字面量,雙引號里的解析的是一個表達式,同樣也可以是實例上定義的數據和方法(其實就是引用一個變量)。 

  1. msg='浪里行舟' 

這種在沒有 v-bind 的模式下只能傳遞一個字面量,這個字面量只限于 String 類量,字符串類型。那如果想通過字面量進行數據傳遞時,**如果想傳遞非String類型,必須props名前要加上v-bind**,內部通過實例尋找,如果實例方沒有此屬性和方法,則默認為對應的數據類型。

  1. :msg='11111' //Number  
  2. :msg='true' //Bootlean  
  3. :msg='()=>{console.log(1)}' //Function 
  4. :msg='{a:1}' //Object ``` 

二、事件

1.事件驅動與數據驅動

用原生JavaScript事件驅動通常是這樣的流程:

  • 先通過特定的選擇器查找到需要操作的節點 -> 給節點添加相應的事件監聽
  • 然后用戶執行某事件(點擊,輸入,后退等等) -> 調用 JavaScript 來修改節點

這種模式對業務來說是沒有什么問題,但是從開發成本和效率來說會比較不理想,特別是在業務系統越來越龐大的時候。另一方面,找節點和修改節點這件事,效率本身就很低,因此出現了數據驅動模式。

Vue的一個核心思想是數據驅動。所謂數據驅動,是指視圖是由數據驅動生成的,我們對視圖的修改,不會直接操作 DOM,而是通過修改數據,其流程如下:

用戶執行某個操作 -> 反饋到 VM 處理(可以導致 Model 變動) -> VM 層改變,通過綁定關系直接更新頁面對應位置的數據

可以簡單地理解:數據驅動不是操作節點的,而是通過虛擬的抽象數據層來直接更新頁面。主要就是因為這一點,數據驅動框架才得以有較快的運行速度(因為不需要去折騰節點),并且可以應用到大型項目。

2.修飾符事件

Vue事件分為普通事件和修飾符事件,這里我們主要介紹修飾符事件。

Vue 提供了大量的修飾符封裝了這些過濾和判斷,讓開發者少寫代碼,把時間都投入到業務、邏輯上,只需要通過一個修飾符去調用。我們先來思考這樣問題:怎樣給這個自定義組件 custom-component 綁定一個原生的 click 事件? 

  1. <custom-component>組件內容</custom-component>  

如果你的回答是``,那就錯了。這里的 @click 是自定義事件 click,并不是原生事件 click。綁定原生的 click 是這樣的: 

  1. <custom-component @click.native="xxx">組件內容</custom-component>  

實際開發過程中離不開事件修飾符,常見事件修飾符有以下這些:

- 表單修飾符

1).lazy

在默認情況下,`v-model` 在每次 `input` 事件觸發后將輸入框的值與數據進行同步 。你可以添加 `lazy` 修飾符,從而轉變為使用 `change`事件進行同步。適用于輸入完所有內容后,光標離開才更新視圖的場景。

2).trim

如果要自動過濾用戶輸入的首尾空白字符,可以給 v-model 添加 trim 修飾符: 

  1. <input v-model.trim="msg" 

這個修飾符可以過濾掉輸入完密碼不小心多敲了一下空格的場景。需要注意的是,**它只能過濾首尾的空格**!首尾,中間的是不會過濾的。

3).number

如果想自動將用戶的輸入值轉為數值類型,可以給 v-model 添加 number 修飾符: 

  1. <input v-model.number="value" type="text" /> ``` 
  2. ![number.gif](https://upload-images.jianshu.io/upload_images/3174701-0bd73cd43bf64ce1.gif?imageMogr2/auto-orient/strip)  

從上面例子,可以得到如果你先輸入數字,那它就會限制你輸入的只能是數字。如果你先輸入字符串,那它就相當于沒有加.number

- 事件修飾符 

  1. <!-- 阻止單擊事件繼續傳播 --> 
  2. <a v-on:click.stop="doThis"></a> 
  3.  
  4. <!-- 提交事件不再重載頁面 --> 
  5. <form v-on:submit.prevent="onSubmit"></form> 
  6.  
  7. <!-- 修飾符可以串聯 --> 
  8. <a v-on:click.stop.prevent="doThat"></a>  

三、插槽

插槽分為普通插槽和作用域插槽,其實兩者很類似,只不過作用域插槽可以接受子組件傳遞過來的參數。

1.作用域插槽

我們不妨通過一個todolist的例子來了解作用域插槽。如果當item選中后,文字變為黃色(如下圖所示),該如何實現呢? 

  1. ![slot.gif](https://upload-images.jianshu.io/upload_images/3174701-b5ebab9122420e40.gif?imageMogr2/auto-orient/strip)  
  2.  
  3. // 父組件 
  4. <template> 
  5.   <div class="toList"
  6.     <input v-model="info" type="text" /> <button @click="addItem">添加</button> 
  7.     <ul> 
  8.       <TodoItem v-for="(item, index) in listData" :key="index"
  9.         <template v-slot:item="itemProps"> // 這是個具名插槽 
  10.         // 其中itemProps的值就是子組件傳遞過來的對象 
  11.           <span 
  12.             :style="{ 
  13.               fontSize: '20px'
  14.               color: itemProps.checked ? 'yellow' : 'blue' 
  15.             }" 
  16.             >{{ item }}</span 
  17.           > 
  18.         </template> 
  19.       </TodoItem> 
  20.     </ul> 
  21.   </div> 
  22. </template> 
  23. <script> 
  24. import TodoItem from "./TodoItem"
  25. export default { 
  26.   components: { 
  27.     TodoItem 
  28.   }, 
  29.   data() { 
  30.     return { 
  31.       info: ""
  32.       listData: [] 
  33.     }; 
  34.   }, 
  35.   methods: { 
  36.     addItem() { 
  37.       this.listData.push(this.info); 
  38.       this.info = ""
  39.     } 
  40.   } 
  41. }; 
  42. </script> 
  43.  
  44. // 子組件 
  45. <template> 
  46.   <div> 
  47.     <li class="item"
  48.       <input v-model="checked" type="checkbox" /> 
  49.       <slot name="item" :checked="checked"></slot> // 將checked的值傳遞給父組件 
  50.     </li> 
  51.   </div> 
  52. </template> 
  53. <script> 
  54. export default { 
  55.   data() { 
  56.     return { 
  57.       checked: false 
  58.     }; 
  59.   } 
  60. }; 
  61. </script> 

值得注意:v-bind:style 的對象語法十分直觀——看著非常像 CSS,但其實是一個 JavaScript 對象。CSS 屬性名可以用駝峰式 (camelCase) 或短橫線分隔 (kebab-case,記得用引號括起來) 來命名。

2.新語法

在 2.6.0 中,我們為具名插槽和作用域插槽引入了一個新的統一的語法 (即 `v-slot` 指令)。它取代了 `slot` 和 `slot-scope` 。

我們通過一個例子介紹下默認插槽、具名插槽和作用域插槽的新語法: 

  1. // 父組件  
  2. <template>  
  3.   <div class="helloSlot" 
  4.     <h2>2.6 新語法</h2>  
  5.     <SlotDemo>  
  6.       <p>默認插槽:default slot</p>  
  7.       <template v-slot:title>  
  8.         <p>具名插槽:title slot1</p>  
  9.         <p>具名插槽:title slot2</p>  
  10.       </template>  
  11.       <template v-slot:item="props" 
  12.         <p>作用域插槽:item slot-scope {{ props }}</p>  
  13.       </template>  
  14.     </SlotDemo>  
  15.   </div>  
  16. </template>  
  17. <script>  
  18. import Slot from "./slot" 
  19. export default {  
  20.   components: {  
  21.     SlotDemo: Slot  
  22.   }  
  23. };  
  24. </script>  
  25.  
  26.  
  27. // 子組件  
  28. <template>  
  29.   <div>  
  30.     <slot />  
  31.     <slot name="title" />  
  32.     <slot name="item" :propData="propData" />  
  33.   </div>  
  34. </template>  
  35. <script>  
  36. export default {  
  37.   data() {  
  38.     return {  
  39.       propData: {  
  40.         value: "浪里行舟"  
  41.       }  
  42.     };  
  43.   }  
  44. };  
  45. </script>   
  46. ![slot](https://upload-images.jianshu.io/upload_images/3174701-1e0368524f073643.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)  

參考文章

浪里行舟:碩士研究生,專注于前端。個人公眾號:「前端工匠」,致力于打造適合初中級工程師能夠快速吸收的一系列優質文章!

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

 

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2025-04-01 00:54:00

2021-02-19 08:38:36

Kubernetes容器化分布式

2016-12-12 09:01:47

Amazon Go核心技術

2023-02-09 08:01:12

核心組件非阻塞

2009-07-17 16:19:16

Swing核心組件

2024-01-10 12:26:16

2022-07-02 08:40:00

并發編程

2015-08-18 08:55:03

redux核心

2012-05-16 11:24:29

System Cent

2024-12-27 10:20:54

2011-06-24 16:26:20

SEO

2025-11-03 09:18:35

2010-07-19 10:05:07

jQuery

2022-05-15 23:32:00

元宇宙虛擬世界科技

2022-01-05 08:53:13

Spring原理分析MVC

2012-02-03 08:59:37

微軟云計算System Cent

2024-02-02 09:04:23

VueKeepAlive緩存組件

2025-04-03 00:20:00

2025-02-04 18:36:12

2011-04-22 10:13:35

SimpleFrame
點贊
收藏

51CTO技術棧公眾號

亚洲免费观看高清完整版在线| 99成人免费视频| 欧美一级爆毛片| 日本在线xxx| 激情小说 在线视频| 蜜桃视频第一区免费观看| 欧美老女人性视频| 日韩中文字幕电影| 成人污版视频| 欧美性xxxx极品高清hd直播| 伊人久久大香线蕉午夜av| 丰满人妻一区二区三区免费视频| 老司机午夜精品视频在线观看| 美女啪啪无遮挡免费久久网站| 野外性满足hd| 一区二区三区四区精品视频| 欧美自拍丝袜亚洲| 免费观看国产精品视频| 精品国产白色丝袜高跟鞋| 91亚洲精品久久久蜜桃| 亚洲一区二区自拍| 中文字幕观看视频| 国产日韩一区二区三区在线| 欧美巨大黑人极品精男| 亚洲色图欧美色| 国产一区调教| 日韩区在线观看| 黄色在线视频网| 成人影院大全| 亚洲国产精品一区二区久久 | 热久久美女精品天天吊色| 欧美色图亚洲天堂| 亚洲成人日韩| 色妞在线综合亚洲欧美| 国产精品一二三区在线观看| 四虎影视精品| 日韩av中文字幕在线| 中文字幕资源在线观看| 成人黄色在线| 在线免费一区三区| 国产精品天天av精麻传媒| 午夜不卡影院| 欧美性jizz18性欧美| 欧美亚洲精品一区二区| 成人黄色动漫| 欧美日韩一区二区免费在线观看| 黄色一级视频在线播放| 98色花堂精品视频在线观看| 亚洲伊人色欲综合网| 菠萝蜜视频在线观看入口| 主播国产精品| 亚洲综合激情另类小说区| 一本大道东京热无码aⅴ| caopeng在线| 一区二区视频在线| 日韩伦理在线免费观看| 成人观看网址| 色偷偷久久一区二区三区| 欧美激情精品久久久久久小说| 伊人久久精品一区二区三区| 欧洲精品一区二区| 亚洲天堂网2018| 免费观看亚洲天堂| 精品日韩在线观看| 久久久久国产精品无码免费看| 欧美一区 二区| 亚洲欧美国产精品专区久久 | 欧美综合另类| 久久久黄色av| 国产在线综合网| 国产精品五区| 国产精品视频精品| 国产美女自慰在线观看| 丁香激情综合国产| 欧美精品尤物在线| 欧洲不卡av| 亚洲国产日日夜夜| 99热成人精品热久久66| 日韩伦理一区二区| 精品少妇一区二区三区| 精品国产av无码| 亚洲国产日韩欧美在线| 欧美大片网站在线观看| 精品人妻一区二区色欲产成人| 美女在线观看视频一区二区| www 成人av com| 精品视频二区| 一区二区三区精品久久久| 亚洲国产精品久久久久婷蜜芽| 粉嫩av一区二区三区四区五区 | 熟妇高潮一区二区| 国产成人影院| 欧美激情2020午夜免费观看| 国产精品va无码一区二区三区| 精品一区二区免费在线观看| 精品久久sese| 黄色在线观看网站| 欧美日韩另类视频| 久久精品亚洲天堂| 自拍亚洲一区| 色综合久久88色综合天天看泰| 天堂网视频在线| 国产成人精品免费网站| 天堂精品视频| 中文在线中文资源| 日韩一二三四区| 国产综合精品久久久久成人av| 国内揄拍国内精品久久| 国产精品一区二区久久精品| 亚洲欧美丝袜中文综合| 亚洲激情在线播放| 天堂一区在线观看| 免费av一区二区三区四区| 欧美激情视频给我| 亚洲一级在线播放| 国产亚洲欧美一区在线观看| 91免费黄视频| 一区二区三区视频播放| 久久久精品在线观看| 天天干天天色综合| www.av亚洲| 久久天天东北熟女毛茸茸| 欧美日韩破处视频| 亚洲一级一级97网| 黄色在线视频网址| 91麻豆国产福利精品| 日韩极品视频在线观看| 成人网av.com/| 久久精品电影网站| 一级黄色大片免费| 国产亚洲精品资源在线26u| 少妇高潮喷水在线观看| 国内精品偷拍| 色综合久久天天综线观看| 99久久精品国产成人一区二区| 国产精品久久久久久久第一福利 | 中文永久免费观看| 亚洲国产经典视频| 亚洲三级视频网站| 成人激情视频| 国产美女91呻吟求| 日本免费在线观看| 欧美放荡的少妇| 久久99久久99精品免费看小说| 麻豆国产91在线播放| 亚洲图片都市激情| 亚洲精品一区二区在线播放∴| 久久天天躁狠狠躁夜夜躁2014 | 精品一区二区三区影院在线午夜 | 一本久久综合| 快播亚洲色图| 日韩一级二级| 日韩最新在线视频| 99在线观看免费| 亚洲成在线观看| 中出视频在线观看| 久久久天天操| 婷婷五月色综合| 国产精品成人3p一区二区三区| 欧美区在线播放| 日本高清视频免费观看| 欧美午夜无遮挡| 国产在线综合视频| 国产精品一区二区不卡| 欧美精品久久久久久久久久久| 久久悠悠精品综合网| 日本一区二区在线播放| 91se在线| 精品久久久久久久久久久久久久久 | 91精品婷婷国产综合久久竹菊| 99热精品免费| 99久久综合精品| 日本久久久久久久久久久久| 亚洲最新色图| 精品一区2区三区| 黄色成人在线视频| 欧美激情精品久久久久久变态 | 国产亚洲欧美日韩日本| 在线观看免费不卡av| 在线播放精品| 亚洲成人a**址| 成人性生交大片免费看96| 国产aaa精品| 亚洲夜夜综合| 亚洲天堂男人天堂| www.天堂在线| 欧美性色综合网| 欧美日韩在线视频免费| 久久亚洲综合av| 91人妻一区二区三区| 免费亚洲网站| 成人毛片100部免费看| 国产成人手机高清在线观看网站| 99久久伊人精品影院| 外国电影一区二区| 国内精品久久久久| 日本高清中文字幕在线| 日韩精品中文字幕在线播放| 国产福利视频导航| 欧美影院一区二区三区| 日韩久久久久久久久| 中文字幕佐山爱一区二区免费| 丰满少妇在线观看资源站| 精品一区二区精品| 黑鬼大战白妞高潮喷白浆| 欧美日韩国产欧| 亚洲一区二区三区午夜| 久久综合欧美| 精品国产福利| 亚洲综合影院| 91在线色戒在线| 成人18视频在线观看| 欧美一区视频在线| segui88久久综合9999| 不卡av电影在线观看| 欧美日韩三区四区| av漫画网站在线观看| 日韩在线视频一区| 免费黄色在线视频网站| 欧美成人免费网站| 91麻豆成人精品国产免费网站| 欧美午夜激情在线| 久草视频精品在线| 亚洲激情在线激情| 中文字幕av播放| 亚洲国产精品精华液ab| 无码人妻精品一区二区三区温州| 大桥未久av一区二区三区中文| 国产欧美激情视频| 蜜桃视频一区二区三区在线观看 | 亚洲黄色免费在线观看| 国产成人免费视频网站高清观看视频| 国产三级精品三级在线| 美女网站在线免费欧美精品| 亚洲狼人综合干| 久久中文精品| 久久九九国产视频| 久久一区欧美| 37pao成人国产永久免费视频| 亚洲一区欧美二区| 成年人免费在线播放| 免费在线欧美黄色| 超碰影院在线观看| 日韩中文字幕一区二区三区| 日韩 欧美 高清| 首页国产欧美久久| 黄色永久免费网站| 麻豆精品视频在线观看视频| 中国黄色片一级| 国产精品系列在线播放| 中文字幕一二三| 成人中文字幕合集| 黄色a一级视频| 久久久午夜精品| 黑人と日本人の交わりビデオ| 国产精品成人在线观看| 午夜国产福利一区二区| 亚洲影院免费观看| 日本午夜视频在线观看| 色狠狠综合天天综合综合| wwwwww在线观看| 9191精品国产综合久久久久久 | 大尺度一区二区| 一级特级黄色片| 日本一区二区三区高清不卡| 999福利视频| 亚洲综合色婷婷| 天天操天天操天天操天天| 欧美性欧美巨大黑白大战| 97精品人妻一区二区三区| 精品美女一区二区| 色视频在线观看| 日韩亚洲第一页| 91桃色在线| 国产国语刺激对白av不卡| 国产精品日本一区二区不卡视频| 国产美女99p| 欧美综合一区| 久草视频国产在线| 三级不卡在线观看| 曰本三级日本三级日本三级| 久久综合狠狠综合| 国精产品一区一区二区三区mba | 丰满少妇被猛烈进入高清播放| 日韩高清不卡一区二区| 韩国三级在线播放| 久久免费视频色| av激情在线观看| 欧美午夜无遮挡| 国产夫妻性生活视频| 亚洲午夜女主播在线直播| 日韩伦理av| 国产精品精品久久久| jizz久久精品永久免费| 亚洲乱码一区二区三区| 亚洲高清av| 国产免费中文字幕| 国产偷v国产偷v亚洲高清| 精国产品一区二区三区a片| 在线日韩国产精品| 亚洲精品久久久久久久久久久久久久 | 欧美视频一区二区三区四区 | 日本一区二区三区国色天香| 国产精品第九页| 欧美日韩国产高清一区二区三区| 日本加勒比一区| 欧美理论片在线观看| 黑人一区二区三区| 欧美亚洲免费高清在线观看 | 欧美一级电影久久| 日韩免费成人| 色视频一区二区三区| 国产欧美一区二区色老头| 日本人dh亚洲人ⅹxx| 国产无人区一区二区三区| 久久久久久久久久免费视频| 欧美一区二区三区视频在线 | 日韩在线观看| 50路60路老熟妇啪啪| 99久久精品国产一区| 免费在线视频观看| 欧美一卡二卡三卡| 免费在线视频欧美| 国产欧美日韩专区发布| 精品福利久久久| 久久久久久三级| 久久视频一区二区| 国产日产精品一区二区三区| 欧美精品一区二区三区四区 | 一边摸一边做爽的视频17国产| 亚洲人成网站色在线观看| 中文字幕乱码一区二区| 伊人伊成久久人综合网站| 日韩免费小视频| 牛人盗摄一区二区三区视频| 免费日韩av片| 国产精品20p| 欧美亚洲综合久久| eeuss影院在线观看| 国产精品直播网红| 91久久夜色精品国产按摩| 青青草久久伊人| 一区二区在线看| 好吊色一区二区| 久久理论片午夜琪琪电影网| 久久男人av| 99热成人精品热久久66| 国产女同性恋一区二区| 一区二区三区在线免费观看视频| 中文字幕亚洲欧美日韩高清| 久久精品国产福利| 国产卡一卡二在线| 国产福利91精品一区二区三区| 国产在线观看免费av| 亚洲精品国产品国语在线| 在线观看网站免费入口在线观看国内 | 91福利社在线观看| 在线观看免费黄色| 亚洲在线免费看| 亚洲精品影院在线观看| 一区二区黄色片| 欧美精品日韩精品| 羞羞视频在线观看不卡| 久久99精品久久久久久秒播放器 | 亚洲精品国精品久久99热一| 国产日韩电影| 亚洲欧洲免费无码| 国产酒店精品激情| 久久精品国产成人av| 在线成人免费网站| 香港久久久电影| 男人操女人免费软件| 中文字幕一区二区不卡| 成人精品在线播放| 国产成人拍精品视频午夜网站| 小处雏高清一区二区三区| 亚洲视频 中文字幕| 91成人在线免费观看| 国产福利在线播放麻豆| 九九九九精品| 精品一区二区三区免费观看| 日本熟女一区二区| 中文字幕精品www乱入免费视频| 亚洲3区在线| 美女一区二区三区视频| 亚洲一区在线看| 91精品专区| 久久99久久99精品蜜柚传媒| 秋霞电影网一区二区| xxxxxx国产| 久久久精品影院| 国产一区二区精品福利地址| 国产精品99精品无码视亚| 欧美日韩性生活| 在线观看特色大片免费视频| 日韩人妻一区二区三区蜜桃视频| 久久久不卡网国产精品二区| 亚洲精品久久久久久久久久| 成人激情电影一区二区| 久久激情婷婷|