国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

vue3的基本使用方法詳細教程

 更新時間:2023年06月06日 10:12:27   作者:luofei_create  
這篇文章主要介紹了vue3的基本使用方法,結(jié)合實例形式詳細分析了vue3功能、組件、生命周期、TypeScript結(jié)合運用等相關概念與使用方法,需要的朋友可以參考下

一、初識vue3

1.vue3簡介

  • 2020年9月18日,vue3發(fā)布3.0版本,代號大海賊時代來臨,One Piece
  • 特點:
    • 無需構(gòu)建步驟,漸進式增強靜態(tài)的 HTML
    • 在任何頁面中作為 Web Components 嵌入
    • 單頁應用 (SPA)
    • 全棧 / 服務端渲染 (SSR)
    • Jamstack / 靜態(tài)站點生成 (SSG)
    • 開發(fā)桌面端、移動端、WebGL,甚至是命令行終端中的界面

2.Vue3帶來了什么

  • 打包大小減少40%
  • 初次渲染快55%,更新渲染快133%
  • 內(nèi)存減少54%

3.分析目錄結(jié)構(gòu)

  • main.js中的引入
  • 在模板中vue3中是可以沒有根標簽了,這也是比較重要的改變
  • 應用實例并不只限于一個。createApp API 允許你在同一個頁面中創(chuàng)建多個共存的 Vue 應用,而且每個應用都擁有自己的用于配置和全局資源的作用域。
//main.js
//引入的不再是Vue構(gòu)造函數(shù)了,引入的是一個名為createApp的工廠函數(shù)
import {createApp} from 'vue
import App from './App.vue
//創(chuàng)建應用實例對象-app(類似于之前vue2中的vm實例,但是app比vm更輕)
createApp(APP).mount('#app')
//卸載就是unmount,卸載就沒了
//createApp(APP).unmount('#app')
//之前我們是這么寫的,在vue3里面這一塊就不支持了,會報錯的,引入不到 import vue from 'vue'; 
new Vue({
	render:(h) => h(App)
}).$mount('#app')
//多個應用實例
const app1 = createApp({
  /* ... */
})
app1.mount('#container-1')
const app2 = createApp({
  /* ... */
})
app2.mount('#container-2')

安裝vue3的開發(fā)者工具

  • 方式一: 打開chrome應用商店,搜索vue: 里面有個Vue.js devtools,且下面有個角標beta那個就是vue3的開發(fā)者工具
  • 方式二: 離線模式下,可以直接將包丟到擴展程序

二、 常用Composition API(組合式API)

1. setup函數(shù)

  1. 理解:Vue3.0中一個新的額配置項,值為一個函數(shù)

  2. 2.setup是所有Composition API(組合api) “表演的舞臺”

  3. 組件中所用到的:數(shù)據(jù)、方法等等,均要配置在setup中

  4. setup函數(shù)的兩種返回值:

    • 若返回一個對象,則對象中的屬性、方法,在模板中均可以直接使用。(重點關注)
    • 若返回一個渲染函數(shù):則可以自定義渲染內(nèi)容。
  5. 注意點:

    • 盡量不要與Vue2.x配置混用
      • Vue2.x配置(data ,methos, computed…)中訪問到setup中的屬性,方法
      • 但在setup中不能訪問到Vue2.x配置(data.methos,compued…)
      • 如果有重名,setup優(yōu)先
    • setup不能是一個async函數(shù),因為返回值不再是return的對象,而是promise,模板看不到return對象中的屬性
      在這里插入圖片描述
import {h} from 'vue'
//向下兼容,可以寫入vue2中的data配置項
module default {
	name: 'App',
	setup(){
		//數(shù)據(jù)
		let name = '張三',
		let age = 18,
		//方法
		function sayHello(){
			console.log(name)
		},
		//f返回一個對象(常用)
		return {
			name,
			age,
			sayHello
		}
		//返回一個函數(shù)(渲染函數(shù))
		//return () => {return h('h1','學習')} 
		return () => h('h1','學習')
	}
}

1.1關于單文件組件<script setup></script >

  • 每個 *.vue 文件最多可以包含一個 <script setup>。(不包括一般的 <script>)
  • 這個腳本塊將被預處理為組件的 setup() 函數(shù),這意味著它將為每一個組件實例都執(zhí)行。<script setup> 中的頂層綁定都將自動暴露給模板。
  • <script setup> 是在單文件組件 (SFC) 中使用組合式 API 的編譯時語法糖。當同時使用 SFC 與組合式 API 時該語法是默認推薦。相比于普通的 <script> 語法,它具有更多優(yōu)勢:
    • 更少的樣板內(nèi)容,更簡潔的代碼。
    • 能夠使用純 TypeScript 聲明 props 和自定義事件。這個我下面是有說明的
    • 更好的運行時性能 (其模板會被編譯成同一作用域內(nèi)的渲染函數(shù),避免了渲染上下文代理對象)。
    • 更好的 IDE 類型推導性能 (減少了語言服務器從代碼中抽取類型的工作)。

(1)基本語法:

/* 里面的代碼會被編譯成組件 setup() 函數(shù)的內(nèi)容。
  這意味著與普通的 `<script>` 只在組件被首次引入的時候執(zhí)行一次不同,
  `<script setup>` 中的代碼會在每次組件實例被創(chuàng)建的時候執(zhí)行。*/
<script setup>
	console.log('hello script setup')
</script>
頂層的綁定會被暴露給模板

當使用 <script setup> 的時候,任何在 <script setup> 聲明的頂層的綁定 (包括變量,函數(shù)聲明,以及 import 導入的內(nèi)容) 都能在模板中直接使用:

<script setup>
// 變量
const msg = '王二麻子'
// 函數(shù)
function log() {
  console.log(msg)
}
</script>
<template>
  <button @click="log">{{ msg }}</button>
</template>

import 導入的內(nèi)容也會以同樣的方式暴露。這意味著我們可以在模板表達式中直接使用導入的 action 函數(shù),而不需要通過 methods 選項來暴露它:

<script setup>
import { say } from './action'
</script>
<template>
  <div>{{ say ('hello') }}</div>
</template>

(2)響應式:

響應式狀態(tài)需要明確使用響應式 API 來創(chuàng)建。和 setup() 函數(shù)的返回值一樣,ref 在模板中使用的時候會自動解包:

<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
  <button @click="count++">{{ count }}</button>
</template>

(3)使用組件:

  • <script setup> 范圍里的值也能被直接作為自定義組件的標簽名使用:
/**
*這里 MyComponent 應當被理解為像是在引用一個變量。
*如果你使用過 JSX,此處的心智模型是類似的。
*其 kebab-case 格式的 <my-component> 同樣能在模板中使用——不過,
*強烈建議使用 PascalCase 格式以保持一致性。同時這也有助于區(qū)分原生的自定義元素。
*/
<script setup>
import MyComponent from './MyComponent.vue'
</script>
<template>
  <MyComponent />
</template>
動態(tài)組件
/**
*由于組件是通過變量引用而不是基于字符串組件名注冊的,
*在 <script setup> 中要使用動態(tài)組件的時候,應該使用*動態(tài)的 :is 來綁定:
*/
<script setup>
import Foo from './Foo.vue'
import Bar from './Bar.vue'
</script>
<template>
  <component :is="Foo" />
  <component :is="someCondition ? Foo : Bar" />
</template>
遞歸組件
  • 一個單文件組件可以通過它的文件名被其自己所引用。例如:名為 FooBar.vue 的組件可以在其模板中用 <FooBar/> 引用它自己。
  • 注意這種方式相比于導入的組件優(yōu)先級更低。如果有具名的導入和組件自身推導的名字沖突了,可以為導入的組件添加別名:
import { FooBar as FooBarChild } from './components'
命名空間組件
  • 可以使用帶 . 的組件標簽,例如 <Foo.Bar> 來引用嵌套在對象屬性中的組件。這在需要從單個文件中導入多個組件的時候非常有用:
<script setup>
import * as Form from './form-components'
</script>
<template>
  <Form.Input>
    <Form.Label>label</Form.Label>
  </Form.Input>
</template>

(4)使用自定義指令:

  • 全局注冊的自定義指令將正常工作。本地的自定義指令在 <script setup> 中不需要顯式注冊,但他們必須遵循 vNameOfDirective 這樣的命名規(guī)范:
<script setup>
const vMyDirective = {
  beforeMount: (el) => {
    // 在元素上做些操作
  }
}
</script>
<template>
  <h1 v-my-directive>This is a Heading</h1>
</template>
  • 如果指令是從別處導入的,可以通過重命名來使其符合命名規(guī)范:
<script setup>
import { myDirective as vMyDirective } from './MyDirective.js'
</script>

(5)defineProps() 和 defineEmits():

  • 為了在聲明 props 和 emits 選項時獲得完整的類型推導支持,我們可以使用 defineProps 和 defineEmits API,它們將自動地在 <script setup> 中可用:
<script setup>
const props = defineProps({
  foo: String
})
const emit = defineEmits(['change', 'delete'])
// setup 代碼
</script>
  • defineProps 和 defineEmits 都是只能在 <script setup> 中使用的編譯器宏。他們不需要導入,且會隨著 <script setup> 的處理過程一同被編譯掉。
  • defineProps 接收與 props 選項相同的值,defineEmits 接收與 emits 選項相同的值。
  • defineProps 和 defineEmits 在選項傳入后,會提供恰當?shù)念愋屯茖А?/li>
  • 傳入到 defineProps 和 defineEmits 的選項會從 setup 中提升到模塊的作用域。因此,傳入的選項不能引用在 setup 作用域中聲明的局部變量。這樣做會引起編譯錯誤。但是,它可以引用導入的綁定,因為它們也在模塊作用域內(nèi)。

(5)defineExpose:

  • 使用 <script setup> 的組件是默認關閉的——即通過模板引用或者 $parent 鏈獲取到的組件的公開實例,不會暴露任何在 <script setup> 中聲明的綁定。
//可以通過 defineExpose 編譯器宏來顯式指定在 <script setup> 組件中要暴露出去的屬性:
<script setup>
import { ref } from 'vue'
const a = 1
const b = ref(2)
defineExpose({
  a,
  b
})
</script>
//當父組件通過模板引用的方式獲取到當前組件的實例,
//獲取到的實例會像這樣 { a: number, b: number } (ref 會和在普通實例中一樣被自動解包)

(6)useSlots() 和 useAttrs():

  • <script setup> 使用 slots 和 attrs 的情況應該是相對來說較為罕見的,因為可以在模板中直接通過 $slots 和 $attrs 來訪問它們。在你的確需要使用它們的罕見場景中,可以分別用 useSlots 和 useAttrs 兩個輔助函數(shù):
<script setup>
import { useSlots, useAttrs } from 'vue'
const slots = useSlots()
const attrs = useAttrs()
</script>
//useSlots 和 useAttrs 是真實的運行時函數(shù),它的返回與 setupContext.slots 和 setupContext.attrs 等價。
//它們同樣也能在普通的組合式 API 中使用。

(7)與普通的 <script> 一起使用:

<script setup> 可以和普通的 <script> 一起使用。普通的 <script> 在有這些需要的情況下或許會被使用到:

  • 聲明無法在
<script>
// 普通 <script>, 在模塊作用域下執(zhí)行 (僅一次)
runSideEffectOnce()
// 聲明額外的選項
export default {
  inheritAttrs: false,
  customOptions: {}
}
</script>
<script setup>
// 在 setup() 作用域中執(zhí)行 (對每個實例皆如此)
</script>

(8)頂層 await:

  • <script setup> 中可以使用頂層 await。結(jié)果代碼會被編譯成 async setup():
<script setup>
const post = await fetch(`/api/post/1`).then((r) => r.json())
</script>
// 另外,await 的表達式會自動編譯成在 await 之后保留當前組件實例上下文的格式。

2.ref 函數(shù)

  • 作用:定義一個響應式的數(shù)據(jù)
  • 語法: const xxx = ref(initValue)
    • 創(chuàng)建一個包含響應式數(shù)據(jù)引用對象(reference對象)
    • JS中操作數(shù)據(jù):xxx.value
    • 模板中讀取數(shù)據(jù):不需要.value,直接: {{xxx}}
  • 備注:
    • 接收的數(shù)據(jù)可以是:基本類型、也可以是對象類型
    • 基本類型的數(shù)據(jù):響應式依然靠的是Object.defineProperty()的get和set完成的
    • 對象類型的數(shù)據(jù): 內(nèi)部”求助“了Vue3.0中的一個新的函數(shù)——reactive函數(shù)

3.reactive 函數(shù)

  • 作用:定義一個對象類型的響應式數(shù)據(jù)(基本類型別用他,用ref函數(shù))
  • 語法:const 代理對象 = reactive(被代理對象)接收一個對象(或數(shù)組),返回一個代理對象(proxy對象)
  • reactive定義的響應式數(shù)據(jù)是”深層次的“
  • 內(nèi)部基于ES6的Proxy實現(xiàn),通過代理對象操作源對象內(nèi)部數(shù)據(jù)進行操作

4.Vue3.0中響應式原理

  • 先來看一看vue2的響應式原理
    • 對象類型: 通過Object.defineProperty()對屬性的讀取、修改進行攔截(數(shù)據(jù)劫持)
    • 數(shù)組類型:通過重寫更新數(shù)組的一系列方法來實現(xiàn)攔截。(對數(shù)組的變更方法進行了包裹)
Object.defineProperty( data, 'count', {
	get(){},
	set(){}
})
//模擬實現(xiàn)一下
let person = {
	name: '張三',
	age: 15,
}
let p = {}
Object.defineProperty( p, 'name', {
	configurable: true, //配置這個屬性表示可刪除的,否則delete p.name 是刪除不了的 false
	get(){
		//有人讀取name屬性時調(diào)用
		return person.name
	},
	set(value){
		//有人修改時調(diào)用
		person.name = value
	}
})
  • 存在問題:
    1. 新增屬性。刪除屬性。界面不會更新
    2. 直接通過下表修改數(shù)組,界面不會自動更新
  • vue3的響應式
    • 實現(xiàn)原理:
      • 通過Proxy(代理):攔截對象中任意屬性的變化,包括:屬性值的讀寫、屬性的添加、屬性的刪除等等。
      • 通過Reflect(反射):對被代理對象的屬性進行操作
      • MDN文檔中描述的Proxy與Reflect:可以參考對應的文檔
//模擬vue3中實現(xiàn)響應式
let person = {
	name: '張三',
	age: 15,
}
//我們管p叫做代理數(shù)據(jù),管person叫源數(shù)據(jù)
const p = new Proxy(person,{
	//target代表的是person這個源對象,propName代表讀取或者寫入的屬性名
	get(target,propName){
		console.log('有人讀取了p上面的propName屬性')
		return target[propName]
	},
	//不僅僅是修改調(diào)用,增加的時候也會調(diào)用
	set(target,propName,value){
		console.log(`有人修改了p身上的${propName}屬性,我要去更新界面了`)
		target[propName] = value
	},
	deleteProperty(target,propName){
		console.log(`有人刪除了p身上的${propName}屬性,我要去更新界面了`)
		return delete target[propName]
	}
})
//映射到person上了,捕捉到修改,那就是響應式啊
//vue3底層源碼不是我們上面寫的那么low,實現(xiàn)原理一樣,但是用了一個新的方式
window.Reflect
![Reflect的寫法](https://img-blog.csdnimg.cn/565f96b1be74435cacbc42e06706791d.png)
let obj = {
	a: 1,
	b:2,
}
//傳統(tǒng)的只能通過try catch去捕獲異常,如果使用這種那么底層源碼將會有一堆try catch
try{
	Object.defineProperty( obj, 'c', {
		get(){ return 3 },
	})
	Object.defineProperty( obj, 'c', {
		get(){ return 4 },
	})
} catch(error) {
	console.log(error)
}
//新的方式: 通過Reflect反射對象去操作,相對來說要舒服一點,不會要那么多的try catch
const x1 = Reflect.defineProperty( obj, 'c', {
		get(){ return 3 },
})
const x2 = Reflect.defineProperty( obj, 'c', {
		get(){ return 3 },
})
//x1,和x2是有返回布爾值的
if(x2){
	console.log('某某操作成功了')
}else {
	console.log('某某操作失敗了')
}
  • 所以vue3最終的響應式原理如下:
let person = {
	name: '張三',
	age: 15,
}
//我們管p叫做代理數(shù)據(jù),管person叫源數(shù)據(jù)
const p = new Proxy(person,{
	//target代表的是person這個源對象,propName代表讀取或者寫入的屬性名
	get(target,propName){
		console.log('有人讀取了p上面的propName屬性')
		return Reflect.get(target, propName)
	},
	//不僅僅是修改調(diào)用,增加的時候也會調(diào)用
	set(target,propName,value){
		console.log(`有人修改了p身上的${propName}屬性,我要去更新界面了`)
		Reflect.set(target, propName, value)
	},
	deleteProperty(target,propName){
		console.log(`有人刪除了p身上的${propName}屬性,我要去更新界面了`)
		return Reflect.deleteProperty(target,propName) 
	}
})

5.reactive對比ref

  • 從定義數(shù)據(jù)角度對比:

    • ref用來定義: 基本數(shù)據(jù)類型
    • reactive用來定義: 對象(或數(shù)組)類型數(shù)據(jù)
    • 備注: ref也可以用來定義對象(或數(shù)組)類型數(shù)據(jù),它內(nèi)部會自動通過reactive轉(zhuǎn)為代理對象
  • 從原理角度對比:

    • ref通過Object.defineProperty()的get和set來實現(xiàn)響應式(數(shù)據(jù)劫持)
    • reactive通過Proxy來實現(xiàn)響應式(數(shù)據(jù)劫持),并通過Reflect操作源對象內(nèi)部的數(shù)據(jù)
  • 從使用角度對比:

    • ref定義數(shù)據(jù):操作數(shù)據(jù)需要 .value ,讀取數(shù)據(jù)時模板中直接讀取不需要 .value
    • reactive 定義的數(shù)據(jù): 操作數(shù)據(jù)和讀取數(shù)據(jù)均不需要 .value

5.setup的兩個注意點

  • setup執(zhí)行的時機
    • 在beforeCreate之前執(zhí)行一次,this是undefined
    • setup的參數(shù)
      • props:值為對象,包含: 組件外部傳遞過來,且組件內(nèi)部聲明接收了屬性
      • context:上下文對象
        • attrs: 值為對象,包含:組件外部傳遞過來,但沒有在props配置中聲明的屬性,相當于 this.$attrs
        • slots:收到插槽的內(nèi)容,相當于$slots
        • emit: 分發(fā)自定義事件的函數(shù),相當于this.$emit
//父組件
<script setup>
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
import HelloWorld from './components/test3.vue';
const hello = (val) =>{
  console.log('傳遞的參數(shù)是:'+ val);
}
</script>
<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="傳遞吧" @hello="hello">
    <template v-slot:cacao>
      <span>是插槽嗎</span>
    </template>
    <template v-slot:qwe>
      <span>meiyou</span>
    </template>
  </HelloWorld>
</template>
//子組件
export default {
    name: 'test3',
    props: ['msg'],
    emits:['hello'],
    //這里setup接收兩個參數(shù),一個是props,一個是上下文context
    setup(props,context){
        /**
         * props就是父組件傳來的值,但是他是Porxy類型的對象
         * >Proxy:{msg:'傳遞吧'}
         * 可以當作我們自定義的reactive定義的數(shù)據(jù)
         */
        /**
         * context是一個對象 包含以下內(nèi)容:
         * 1.emit觸發(fā)自定義事件的 
         * 2.attrs 相當于vue2里面的 $attrs 包含:組件外部傳遞過來,但沒有在props配置中聲明的屬性
         * 3.slots 相當于vue2里面的 $slots
         * 3.expose 是一個回調(diào)函數(shù)
         */
        console.log(context.slots);
        let person = reactive({
            name: '張三',
            age: 17,
        })
        function changeInfo(){
            context.emit('hello', 666)
        }
        //返回對象
        return {
            person,
            changeInfo
        }
        //返回渲染函數(shù)(了解) 這個h是個函數(shù)
        //return () => h('name','age')
    }
}
</script>

6.計算屬性與監(jiān)視

(1)computed函數(shù)

  • 與vue2.x中的寫法一致
  • 需要引入computed
<template>
  <h1>一個人的信息</h1>
  <div>
      姓: <input type="text" v-model="person.firstName">
      名:<input type="text" v-model="person.lastName">
      <div>
          <span>簡名:{{person.smallName}}</span> <br>
          <span>全名:{{person.fullName}}</span>
      </div>
  </div>
</template>
<script>
import { computed,reactive } from 'vue'
    export default {
        name: 'test4',
        props: ['msg'],
        emits:['hello'],
        setup(){
            let person = reactive({
                firstName: '張',
                lastName: '三'
            })
            //簡寫形式
            person.smallName = computed(()=>{
                return person.firstName + '-' + person.lastName
            })
            //完全形態(tài)
            person.fullName = computed({
                get(){
                    console.log('調(diào)用get');
                    return person.firstName + '*' + person.lastName
                },
                set(value){
                    console.log('調(diào)用set');
                    const nameArr = value.split('*')
                    person.firstName = nameArr[0]
                    person.firstName = nameArr[1]
                },
            })
            return {
                person,
            }
        },
    }
 </script>

(2)watch函數(shù)

  • 和computed一樣,需要引入api
  • 有兩個小坑:

1.監(jiān)視reactive定義的響應式數(shù)據(jù)的時候:oldValue無法獲取到正確的值,強制開啟了深度監(jiān)視(deep配置無效)
2.監(jiān)視reactive定義的響應式數(shù)據(jù)中某個屬性的時候:deep配置有效
具體請看下面代碼以及注釋

<template>
  <h1>當前求和為: {{sum}}</h1>
  <button @click="sum++">點我+1</button>
  <hr>
  <h1>當前信息為: {{msg}}</h1>
  <button @click="msg+='!' ">修改信息</button>
  <hr>
  <h2>姓名: {{person.name}}</h2>
  <h2>年齡: {{person.age}}</h2>
  <button @click="person.name += '~' ">修改姓名</button> <button @click="person.age++">增長年齡</button>
</template>
<script>
    //使用setup的注意事項
    import { watch,ref,reactive } from 'vue'
    export default {
        name: 'test5',
        props: ['msg'],
        emits:['hello'],
        setup(){
            let sum  = ref(0)
            let msg = ref('你好啊')
            let person = reactive({
                name: '張三',
                age: 18,
                job:{
                    salary: '15k'
                },
            })
            //由于這里的this是指的是undefined,所以使用箭頭函數(shù)
            //情況一:監(jiān)視ref所定義的一個響應式數(shù)據(jù)
            // watch(sum, (newValue,oldValue)=>{
            //     console.log('新的值',newValue);
            //     console.log('舊的值',oldValue);
            // })
            //情況二:監(jiān)視ref所定義的多個響應式數(shù)據(jù)
            watch([sum,msg], (newValue,oldValue)=>{
                console.log('新的值',newValue); //['sum的newValue', 'msg的newValue']
                console.log('舊的值',oldValue); //['sum的oldValue', 'msg的oldValue']
            },{immediate: true,deep:true}) //這里vue3的deep是有點小問題的,可以不用deep,(隱式強制deep)
            //情況三:監(jiān)視reactive定義的所有響應式數(shù)據(jù),
            //1.此處無法獲取正確的oldValue(newValue與oldValue是一致值),且目前無法解決
            //2.強制開啟了深度監(jiān)視(deep配置無效)
            /**
            * 受到碼友熱心評論解釋: 此處附上碼友的解釋供大家參考:
            * 1. 當你監(jiān)聽一個響應式對象的時候,這里的newVal和oldVal是一樣的,因為他們是同一個對象【引用地址一樣】,
            *    即使里面的屬性值會發(fā)生變化,但主體對象引用地址不變。這不是一個bug。要想不一樣除非這里把對象都換了
            * 
            * 2. 當你監(jiān)聽一個響應式對象的時候,vue3會隱式的創(chuàng)建一個深層監(jiān)聽,即對象里只要有變化就會被調(diào)用。
            *    這也解釋了你說的deep配置無效,這里是強制的。
            */
            watch(person, (newValue,oldValue)=>{
                console.log('新的值',newValue); 
                console.log('舊的值',oldValue);
            })
            //情況四:監(jiān)視reactive對象中某一個屬性的值,
            //注意: 這里監(jiān)視某一個屬性的時候可以監(jiān)聽到oldValue
            watch(()=>person.name, (newValue,oldValue)=>{
                console.log('新的值',newValue);  
                console.log('舊的值',oldValue);
            })
            //情況五:監(jiān)視reactive對象中某一些屬性的值
            watch([()=>person.name,()=>person.age], (newValue,oldValue)=>{
                console.log('新的值',newValue);  
                console.log('舊的值',oldValue);
            })
            //特殊情況: 監(jiān)視reactive響應式數(shù)據(jù)中深層次的對象,此時deep的配置奏效了
            watch(()=>person.job, (newValue,oldValue)=>{
                console.log('新的值',newValue);  
                console.log('舊的值',oldValue);
            },{deep:true}) //此時deep有用
            return {
                sum,
                msg,
                person,
            }
        },
    }
</script>

(3)watchEffect函數(shù)

  • watch的套路是:既要指明監(jiān)視的屬性,也要指明監(jiān)視的回調(diào)
  • watchEffect的套路是:不用指明監(jiān)視哪個屬性,監(jiān)視的回調(diào)中用到哪個屬性,那就監(jiān)視哪個屬性
  • watchEffect有點像computed:
    • 但computed注重的計算出來的值(回調(diào)函數(shù)的返回值),所以必須要寫返回值
    • 而watchEffect更注重的是過程(回調(diào)函數(shù)的函數(shù)體),所以不用寫返回值
<script>
    //使用setup的注意事項
    import { ref,reactive,watchEffect } from 'vue'
    export default {
        name: 'test5',
        props: ['msg'],
        emits:['hello'],
        setup(){
            let sum  = ref(0)
            let msg = ref('你好啊')
            let person = reactive({
                name: '張三',
                age: 18,
                job:{
                    salary: '15k'
                },
            })
            //用處: 如果是比較復雜的業(yè)務,發(fā)票報銷等,那就不許需要去監(jiān)聽其他依賴,只要發(fā)生變化,立馬重新回調(diào)
            //注重邏輯過程,你發(fā)生改變了我就重新執(zhí)行回調(diào),不用就不執(zhí)行,只執(zhí)行一次
            watchEffect(()=>{
                //這里面你用到了誰就監(jiān)視誰,里面就發(fā)生回調(diào)
                const x1 = sum.value
                console.log('我調(diào)用了');
            })
            return {
                sum,
                msg,
                person,
            }
        },
    }
</script>

7.生命周期函數(shù)

<template>
  <h1>生命周期</h1>
  <p>當前求和為: {{sum}}</p>
  <button @click="sum++">加一</button>
</template>
<script>
    //使用setup的注意事項
    import { ref,reactive,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted } from 'vue'
    export default {
        name: 'test7',
        setup(){
           let sum = ref(0)
           //通過組合式API的形式去使用生命周期鉤子
            /**
             * beforeCreate 和  created 這兩個生命周期鉤子就相當于 setup 所以,不需要這兩個
             * 
             * beforeMount   ===>  onBeforeMount
             * mounted       ===>  onMounted
             * beforeUpdate  ===>  onBeforeUpdate
             * updated       ===>  onUpdated
             * beforeUnmount ===>  onBeforeUnmount
             * unmounted     ===>  onUnmounted
             */
            console.log('---setup---');
            onBeforeMount(()=>{
                console.log('---onBeforeMount---');
            })
            onMounted(()=>{
                console.log('---onMounted---');
            })
            onBeforeUpdate(()=>{
                console.log('---onBeforeUpdate---');
            })
            onUpdated(()=>{
                console.log('---onUpdated---');
            })
            onBeforeUnmount(()=>{
                console.log('---onBeforeUnmount---');
            })
            onUnmounted(()=>{
                console.log('---onUnmounted---');
            })
            return {
                sum
            }
        },
        //這種是外層的寫法,如果想要使用組合式api的話需要放在setup中
        beforeCreate(){
            console.log('---beforeCreate---');
        },
        created(){
            console.log('---created---');
        },
        beforeMount(){
            console.log('---beforeMount---');
        },
        mounted(){
            console.log('---mounted---');
        },
        beforeUpdate(){
            console.log('---beforeUpdate---');
        },
        updated(){
            console.log('---updated---');
        },
        //卸載之前
        beforeUnmount(){
            console.log('---beforeUnmount---');
        },
        //卸載之后
        unmounted(){
            console.log('---unmounted---');
        }
    }
</script>

8.自定義hook函數(shù)

  • 什么是hook函數(shù): 本質(zhì)是一個函數(shù),把setup函數(shù)中使用的Composition API進行了封裝
  • 類似于vue2.x中的 mixin
  • 自定義hook的優(yōu)勢: 復用代碼,讓setup中的邏輯更清楚易懂
  • 使用hook實現(xiàn)鼠標打點”:
    創(chuàng)建文件夾和usePoint.js文件
    在這里插入圖片描述
//usePoint.js
import {reactive,onMounted,onBeforeUnmount } from 'vue'
function savePoint(){
    //實現(xiàn)鼠標打點的數(shù)據(jù)
    let point = reactive({
        x: null,
        y: null
    })
    //實現(xiàn)鼠標點的方法
    const savePoint = (e)=>{
         point.x = e.pageX
         point.y = e.pageY
    } 
    //實現(xiàn)鼠標打點的生命周期鉤子
    onMounted(()=>{
        window.addEventListener('click',savePoint)
    })
    onBeforeUnmount(()=>{
        window.removeEventListener('click',savePoint)
    })
    return point
}
export default savePoint
//組件test.vue
<template>
  <p>當前求和為: {{sum}} </p>
  <button @click="sum++">加一</button>
  <hr>
  <h2>當前點擊時候的坐標: x: {{point.x}}  y:{{point.y}}</h2>
</template>
<script>
import { ref } from 'vue'
import usePoint from '../hooks/usePoint'
export default {
    name: 'test8',
    setup(props,context){
        let sum = ref(0)
        let point = usePoint()
        return {
            sum,
            point
        }
    }
}
</script>

9.toRef

  • 作用: 創(chuàng)建一個ref對象,其value值指向另一個對象中的某個屬性值
  • 語法: const name = toRef(person, ‘name’)
  • 應用:要將響應式對象中的某個屬性單獨提供給外部使用
  • 擴展: toRefs與toRef功能一致,但是可以批量創(chuàng)建多個ref對象,語法: toRefs(person)
<template>
  <h2>姓名: {{name2}}</h2>
  <h2>年齡: {{person.age}}</h2>
  <button @click="person.name += '~' ">修改姓名</button> 
  <button @click="person.age++">增長年齡</button>
</template>
<script>
    //使用setup的注意事項
    import { reactive, toRef, toRefs } from 'vue'
    export default {
        name: 'test9',
        setup(){
            let person = reactive({
                name: '張三',
                age: 18,
                job:{
                    salary: '15k'
                },
            })
            //toRef
            const name2 = toRef(person,'name') //第一個參數(shù)是對象,第二個參數(shù)是鍵名
            console.log('toRef轉(zhuǎn)變的是',name2); //ref定義的對象
            //toRefs,批量處理對象的所有屬性
            //const x  = toRefs(person)
            //console.log('toRefs轉(zhuǎn)變的是',x); //是一個對象
            return {
                person,
                name2,
                ...toRefs(person)
            }
        },
    }
</script>

三、TypeScript 與組合式 API

1.為組件的 props 標注類型

//場景一: 使用<script setup>
<script setup lang="ts">
const props = defineProps({
  foo: { type: String, required: true },
  bar: Number
})
props.foo // string
props.bar // number | undefined
</script>
//也可以將 props 的類型移入一個單獨的接口中
<script setup lang="ts">
interface Props {
  foo: string
  bar?: number
}
const props = defineProps<Props>()
</script>
//場景二: 不使用<script setup>
import { defineComponent } from 'vue'
export default defineComponent({
  props: {
    message: String
  },
  setup(props) {
    props.message // <-- 類型:string
  }
})
  • 注意點:為了生成正確的運行時代碼,傳給 defineProps() 的泛型參數(shù)必須是以下之一:
//1.一個類型字面量:
defineProps<{ /*... */ }>()
//2.對同一個文件中的一個接口或?qū)ο箢愋妥置媪康囊?
interface Props {/* ... */}
defineProps<Props>()
//3.接口或?qū)ο笞置骖愋涂梢园瑥钠渌募氲念愋鸵?,但是,傳遞給 defineProps 的泛型參數(shù)本身不能是一個導入的類型:
import { Props } from './other-file'
// 不支持!
defineProps<Props>()
  • Props 解構(gòu)默認值
//當使用基于類型的聲明時,失去了對 props 定義默認值的能力。通過目前實驗性的響應性語法糖來解決:
<script setup lang="ts">
interface Props {
  foo: string
  bar?: number
}
// 對 defineProps() 的響應性解構(gòu)
// 默認值會被編譯為等價的運行時選項
const { foo, bar = 100 } = defineProps<Props>()
</script>

2.為組件的 emits 標注類型

//場景一: 使用<script setup>
<script setup lang="ts">
const emit = defineEmits(['change', 'update'])
// 基于類型
const emit = defineEmits<{
  (e: 'change', id: number): void
  (e: 'update', value: string): void
}>()
</script>
//場景二: 不使用<script setup>
import { defineComponent } from 'vue'
export default defineComponent({
  emits: ['change'],
  setup(props, { emit }) {
    emit('change') // <-- 類型檢查 / 自動補全
  }
})

3.為 ref() 標注類型

import { ref } from 'vue'
import type { Ref } from 'vue'
//1.ref 會根據(jù)初始化時的值推導其類型:
// 推導出的類型:Ref<number>
const year = ref(2020)
// => TS Error: Type 'string' is not assignable to type 'number'.
year.value = '2020'
//2.指定一個更復雜的類型,可以通過使用 Ref 這個類型:
const year: Ref<string | number> = ref('2020')
year.value = 2020 // 成功!
//3.在調(diào)用 ref() 時傳入一個泛型參數(shù),來覆蓋默認的推導行為:
// 得到的類型:Ref<string | number>
const year = ref<string | number>('2020')
year.value = 2020 // 成功!
//4.如果你指定了一個泛型參數(shù)但沒有給出初始值,那么最后得到的就將是一個包含 undefined 的聯(lián)合類型:
// 推導得到的類型:Ref<number | undefined>
const n = ref<number>()

4.為reactive() 標注類型

import { reactive } from 'vue'
//1.reactive() 也會隱式地從它的參數(shù)中推導類型:
// 推導得到的類型:{ title: string }
const book = reactive({ title: 'Vue 3 指引' })
//2.要顯式地標注一個 reactive 變量的類型,我們可以使用接口:
interface Book {
  title: string
  year?: number
}
const book: Book = reactive({ title: 'Vue 3 指引' })

5.為 computed() 標注類型

import { ref, computed } from 'vue'
//1.computed() 會自動從其計算函數(shù)的返回值上推導出類型:
const count = ref(0)
// 推導得到的類型:ComputedRef<number>
const double = computed(() => count.value * 2)
// => TS Error: Property 'split' does not exist on type 'number'
const result = double.value.split('')
//2.通過泛型參數(shù)顯式指定類型:
const double = computed<number>(() => {
  // 若返回值不是 number 類型則會報錯
})

6.為事件處理函數(shù)標注類型

//在處理原生 DOM 事件時,應該為我們傳遞給事件處理函數(shù)的參數(shù)正確地標注類型
<script setup lang="ts">
function handleChange(event) {
  // 沒有類型標注時 `event` 隱式地標注為 `any` 類型,
  // 這也會在 tsconfig.json 中配置了 "strict": true 或 "noImplicitAny": true 時報出一個 TS 錯誤。
  console.log(event.target.value)
}
</script>
<template>
  <input type="text" @change="handleChange" />
</template>
//因此,建議顯式地為事件處理函數(shù)的參數(shù)標注類型,需要顯式地強制轉(zhuǎn)換 event 上的屬性:
function handleChange(event: Event) {
  console.log((event.target as HTMLInputElement).value)
}

7.為 provide / inject 標注類型

/*
provide 和 inject 通常會在不同的組件中運行。要正確地為注入的值標記類型,
Vue 提供了一個 InjectionKey 接口,它是一個繼承自 Symbol 的泛型類型,
可以用來在提供者和消費者之間同步注入值的類型:
*/
import { provide, inject } from 'vue'
import type { InjectionKey } from 'vue'
const key = Symbol() as InjectionKey<string>
provide(key, 'foo') // 若提供的是非字符串值會導致錯誤
const foo = inject(key) // foo 的類型:string | undefined
//建議將注入 key 的類型放在一個單獨的文件中,這樣它就可以被多個組件導入。
//當使用字符串注入 key 時,注入值的類型是 unknown,需要通過泛型參數(shù)顯式聲明:
const foo = inject<string>('foo') // 類型:string | undefined
//注意注入的值仍然可以是 undefined,因為無法保證提供者一定會在運行時 provide 這個值。
//當提供了一個默認值后,這個 undefined 類型就可以被移除:
const foo = inject<string>('foo', 'bar') // 類型:string
//如果你確定該值將始終被提供,則還可以強制轉(zhuǎn)換該值:
const foo = inject('foo') as string

8.為模板引用標注類型

//模板引用需要通過一個顯式指定的泛型參數(shù)和一個初始值 null 來創(chuàng)建:
<script setup lang="ts">
import { ref, onMounted } from 'vue'
const el = ref<HTMLInputElement | null>(null)
onMounted(() => {
  el.value?.focus()
})
</script>
/**
	注意為了嚴格的類型安全,有必要在訪問 el.value 時使用可選鏈或類型守衛(wèi)。這是因為直到組件被掛載前,
	這個 ref 的值都是初始的 null,并且在由于 v-if 的行為將引用的元素卸載時也可以被設置為 null。
*/
<template>
  <input ref="el" />
</template>

9.為組件模板引用標注類型

//有時,你可能需要為一個子組件添加一個模板引用,以便調(diào)用它公開的方法。舉例來說,我們有一個 MyModal 子組件,它有一個打開模態(tài)框的方法
<!-- MyModal.vue -->
<script setup lang="ts">
import { ref } from 'vue'
const isContentShown = ref(false)
const open = () => (isContentShown.value = true)
defineExpose({
  open
})
</script>
//為了獲取 MyModal 的類型,我們首先需要通過 typeof 得到其類型,再使用 TypeScript 內(nèi)置的 InstanceType 工具類型來獲取其實例類型:
<!-- App.vue -->
<script setup lang="ts">
import MyModal from './MyModal.vue'
const modal = ref<InstanceType<typeof MyModal> | null>(null)
const openModal = () => {
  modal.value?.open()
}
</script>
//注意,如果你想在 TypeScript 文件而不是在 Vue SFC 中使用這種技巧,需要開啟 Volar 的Takeover 模式。

四、Vuex與組合式API

  • 組合式API 可以通過調(diào)用 useStore 函數(shù),來在 setup 鉤子函數(shù)中訪問 store。這與在組件中使用選項式 API 訪問 this.$store 是等效的。
import { useStore } from 'vuex'
export default {
  setup () {
    const store = useStore()
  }
}

1.訪問 state 和 getter

  • 為了訪問 state 和 getter,需要創(chuàng)建 computed 引用以保留響應性,這與在選項式 API 中創(chuàng)建計算屬性等效。
import { computed } from 'vue'
import { useStore } from 'vuex'
export default {
  setup () {
    const store = useStore()
    return {
      // 在 computed 函數(shù)中訪問 state
      count: computed(() => store.state.count),
      // 在 computed 函數(shù)中訪問 getter
      double: computed(() => store.getters.double)
    }
  }
}

2.訪問 Mutation 和 Action

  • 要使用 mutation 和 action 時,只需要在 setup 鉤子函數(shù)中調(diào)用 commit 和 dispatch 函數(shù)。
import { useStore } from 'vuex'
export default {
  setup () {
    const store = useStore()
    return {
      // 使用 mutation
      increment: () => store.commit('increment'),
      // 使用 action
      asyncIncrement: () => store.dispatch('asyncIncrement')
    }
  }
}

五、 其他的Composition API

1.shallowReactive與shallowRef

  • shallowReactive:只處理對象最外層屬性的響應式(淺響應式)只考慮第一層數(shù)據(jù)的響應式。
  • shallowRef:只處理基本數(shù)據(jù)類型的響應式,不進行對象的響應式處理,傳遞基本數(shù)據(jù)類型的話跟ref沒有任何區(qū)別,ref是可以進行對象的響應式處理的

我們正常的ref創(chuàng)建的數(shù)據(jù),里面的.value是一個proxy,而shallowRef創(chuàng)建的數(shù)據(jù) .value里面是一個object數(shù)據(jù)類型,所以不會響應式數(shù)據(jù)

  • 什么時候使用?:
    • 如果有一個對象數(shù)據(jù),結(jié)構(gòu)比較深,但變化時只是外層屬性變化 ===> shallowReactive
    • 如果有一個對象數(shù)據(jù),后續(xù)功能不會修改對象中的屬性,而是生新的對象來替換 ===> shallowRef

2.readonly與shallowReadonly

  • readonly:讓一個響應式的數(shù)據(jù)變成只讀的(深只讀)
  • shallowReadonly: 讓一個響應式數(shù)據(jù)變成只讀的(淺只讀)
  • 應用場景:不希望數(shù)據(jù)被修改的時候
<script>
    import { reactive,readonly,shallowReadonly } from 'vue'
    export default {
        name: 'test9',
        setup(){
            let person = reactive({
				name: '張三',
				job:{
					salary: '20k',
				}
			})
			person = readonly(person) //這個時候修改人的信息就不會改變了,所有的都不能改
			/**
			* 頁面不進行響應式的改變,一般存在兩種情況:
			* 1.setup里面定義的數(shù)據(jù)改變了,但是vue沒有檢測到,這個時候是不會改變的
			* 2.setup里面定義的數(shù)據(jù)壓根兒就不讓你改,這個時候也沒法響應式
			*/
			person = shallowReadonly(person) //只有最外層不能修改是只讀的,但是job還是可以改的
            return {
                person
            }
        },
    }
</script>

3.toRaw與markRaw

  • toRaw
    • 作用:將一個由reactive生成的響應式對象轉(zhuǎn)換為普通對象
    • 使用場景:用于讀取響應式對象對應的普通對象,對這個普通對象的所有操作,不會引起頁面更新
  • markRaw:
    • 作用:標記一個對象,使其永遠不會再成為響應式對象
    • 使用場景:
      • 1.有些值不應被設置成響應式的,例如復雜的第三方類庫等
      • 2.當渲染具有不可變數(shù)據(jù)的大列表時候,跳過響應式轉(zhuǎn)換可以提高性能
import {reactive,toRaw,markRaw} from 'vue'
setup(){
	let person = reactive({
		name: '張三',
	})
	function showRawPerson(){
		const p = toRaw(person)
		p.age++
		console.log(p)
	}
	function addCar(){
		let car = {name: '奔馳'}
		person.car = markRaw(car) //一旦這么做時候,他就永遠不能當成響應式數(shù)據(jù)去做了
	}
}

4.customRef

  • 創(chuàng)建一個自定義的ref,并對其依賴項跟蹤和更新觸發(fā)進行顯示控制
  • 實現(xiàn)防抖效果:
<template>
    <input type="text" v-model="keyword">
    <h3>{{keyword}}</h3>
</template>
<script>
    import { customRef, ref } from 'vue'
    export default {
        name: 'test10',
        setup(){
            let timer;
            //自定義一個ref——名為: myRef
            function myRef(value){
                return customRef((track,trigger)=>{
                    return {
                        get(){
                            console.log(`有人讀取我的值了,要把${value}給他`);  //兩次輸出: v-model讀取  h3里面的插值語法調(diào)了一次
                            track()  //追蹤一下改變的數(shù)據(jù)(提前跟get商量一下,讓他認為是有用的)
                            return value
                        },
                        set(newValue){
                            console.log(`有人把myRef這個容器中數(shù)據(jù)改了:${newValue}`);
                            clearTimeout(timer)
                            timer = setTimeout(()=>{
                                value = newValue
                                trigger() //通知vue去重新解析模板,重新再一次調(diào)用get()
                            },500)
                        }
                    }
                })
            }
            // let keyword = ref('hello')  //使用內(nèi)置提供的ref
            let keyword = myRef('hello')  //使用自定義的ref
            return {
                keyword,
            }
        },
    }
</script>

5.provide與inject

官方圖

  • 作用:實現(xiàn)祖孫組件間的通信
  • 套路:父組件有一個provide選項提供數(shù)據(jù),子組件有一個inject選項來開始使用這些數(shù)據(jù)
  • 具體寫法:
//父組件
<script setup>
import { ref,reactive,toRefs,provide } from 'vue';
import ChildVue from './components/Child.vue';
let car = reactive({
  name: '奔馳',
  price: '40w'
})
provide('car',car) //給自己的后代組件傳遞數(shù)據(jù)
const {name, price} = toRefs(car)
</script>
<template>
  <div>
    <h3>我是父組件, {{name}}--{{price}}</h3>
    <ChildVue></ChildVue>
  </div>
</template>
<style>
.app{
  background-color: gray;
  padding: 10px;
  box-sizing: border-box;
}
</style>
//子組件
<script setup>
import { ref } from '@vue/reactivity';
import SonVue from './Son.vue';
</script>
<template>
  <div>
    <h3>我是子組件</h3>
    <SonVue></SonVue>
  </div>
</template>
<style>
.app2{
  background-color: rgb(82, 150, 214);
  padding: 10px;
  box-sizing: border-box;
}
</style>
//孫組件
<script setup>
import { ref,inject } from 'vue';
let car = inject('car') //拿到父組件的數(shù)據(jù)
const {name, price} = car
</script>
<template>
  <div>
    <h3>我是孫組件</h3>
    <p>{{name}}-{{price}}</p>
  </div>
</template>
<style>
.app3{
  background-color: rgb(231, 184, 56);
  padding: 10px;
  box-sizing: border-box;
}
</style>

6.響應式數(shù)據(jù)的判斷

  • isRef:檢查一個值是否為ref對象
  • isReactivce:檢查一個對象是否是由reactive創(chuàng)建的響應式代理
  • isReadonly:檢查一個對象是否由readonly創(chuàng)建的只讀代理
  • isProxy:檢查一個對象是否由reactive或者readonly方法創(chuàng)建的代理

六、Composition API的優(yōu)勢

1.傳統(tǒng)options API存在的問題

  • 使用傳統(tǒng)的Options API中,新增或者修改一個需求,就需要分別在data,methods,computed里面修改

2.Composition API的優(yōu)勢

  • 我們可以更加優(yōu)雅的組織我們的代碼,函數(shù),讓相關功能的代碼更加有序的組織在一起

七、新的組件

1.Transition

  • 會在一個元素或組件進入和離開 DOM 時應用動畫
  • 它是一個內(nèi)置組件,這意味著它在任意別的組件中都可以被使用,無需注冊。它可以將進入和離開動畫應用到通過默認插槽傳遞給它的元素或組件上。進入或離開可以由以下的條件之一觸發(fā):
    • 由 v-if 所觸發(fā)的切換
    • 由 v-show 所觸發(fā)的切換
    • 由特殊元素 切換的動態(tài)組件
<button @click="show = !show">切換</button>
<Transition>
  <p v-if="show">HelloWord</p>
</Transition>
//當一個 <Transition> 組件中的元素被插入或移除時,會發(fā)生下面這些事情
/**
1.Vue 會自動檢測目標元素是否應用了 CSS 過渡或動畫。如果是,則一些 CSS 過渡 class 會在適當?shù)臅r機被添加和移除
2.如果有作為監(jiān)聽器的 JavaScript 鉤子,這些鉤子函數(shù)會在適當時機被調(diào)用
3.如果沒有探測到 CSS 過渡或動畫、也沒有提供 JavaScript 鉤子,那么 DOM 的插入、刪除操作將在瀏覽器的下一個動畫幀后執(zhí)行
*/
//針對CSS 的過渡效果
/**
1.v-enter-from:進入動畫的起始狀態(tài)。在元素插入之前添加,在元素插入完成后的下一幀移除。
2.v-enter-active:進入動畫的生效狀態(tài)。應用于整個進入動畫階段。在元素被插入之前添加,在過渡或動畫完成之后移除。這個 class 可以被用來定義進入動畫的持續(xù)時間、延遲與速度曲線類型
3.v-enter-to:進入動畫的結(jié)束狀態(tài)。在元素插入完成后的下一幀被添加 (也就是 v-enter-from 被移除的同時),在過渡或動畫完成之后移除。
4.v-leave-from:離開動畫的起始狀態(tài)。在離開過渡效果被觸發(fā)時立即添加,在一幀后被移除
5.v-leave-active:離開動畫的生效狀態(tài)。應用于整個離開動畫階段。在離開過渡效果被觸發(fā)時立即添加,在過渡或動畫完成之后移除。這個 class 可以被用來定義離開動畫的持續(xù)時間、延遲與速度曲線類型。
6.v-leave-to:離開動畫的結(jié)束狀態(tài)。在一個離開動畫被觸發(fā)后的下一幀被添加 (也就是 v-leave-from 被移除的同時),在過渡或動畫完成之后移除。
*/
.v-enter-active,
.v-leave-active {
  transition: opacity 0.5s ease;
}
.v-enter-from,
.v-leave-to {
  opacity: 0;
}

2.Fragment

  • 在vue2中:組件必須有一個根標簽
  • 在vue3中:組件可以沒有根標簽,內(nèi)部會將多個標簽包含在一個Fragment虛擬元素中
  • 好處:減少標簽層級,減少內(nèi)存占用

3.Teleport

  • 什么是Teleport? —— Teleport是一種能夠?qū)⑽覀兘M件html結(jié)構(gòu)移動到指定位置的技術(開發(fā)的時候非常有用)
//彈窗實現(xiàn)
<script setup>
import { ref,inject } from 'vue';
let isShow = ref(false)
</script>
<template>
  <div>
      <button @click="isShow = true">點我彈窗</button>
      <teleport to="body"> //定位到body
        <div v-if="isShow">
            <div>
                <h4>我是一個彈窗</h4>
                <h5>內(nèi)容</h5>
                <h5>內(nèi)容</h5>
                <h5>內(nèi)容</h5>
                <button @click="isShow = false">關閉</button>
            </div>
        </div>
      </teleport>
  </div>
</template>
<style>
.dialog{
    width: 300px;
    height: 300px;
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    background-color: blueviolet;
    margin: 0 auto;
}
.mask{
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.5);
}
</style>

4.Suspense

<script setup>
import { defineAsyncComponent } from 'vue'; //引入異步組件
const ChildVue = defineAsyncComponent(()=> import('./components/Child.vue')) //這叫做動態(tài)引入
//這種引入叫做異步引入,如果app不出來的話,那么Child組件也不會引入進來,有一個先后順序
// import ChildVue from './components/Child.vue'; //靜態(tài)引入
// 得等,等所有的組件加載完成之后app才會一起出現(xiàn)
/**
 * Suspense這個標簽,底層就內(nèi)置了插槽,就可以解決異步引入有時候刷新先后出來慢的問題
 * v-slot:default 表示默認的輸出組件
 * v-slot:fallback 表示如果頁面加載的慢了,會優(yōu)先展示這個內(nèi)容,有點像刷新頁面的時候數(shù)據(jù)回來的慢了,就加載一會兒
*/
</script>
<template>
  <div>
    <h3>我是父組件</h3>
    <Suspense>
      <template v-slot:default>
        <ChildVue></ChildVue>
      </template>
      <template v-slot:fallback>
        <h3>稍等,加載中....</h3>
      </template>
    </Suspense>
  </div>
</template>
<style>
.app{
  background-color: gray;
  padding: 10px;
  box-sizing: border-box;
}
</style>
/**還有一種方法就是在子組件中,setup返回一個promise對象,這里之所以可以使用setup返回promise的原因
是: 我們引入的是異步組件且使用了<Suspense></Suspense>
*/
  • 等待異步組件時渲染一些后備內(nèi)容,獲得更好的用戶體驗

八: 新的生命周期鉤子

1.常見的生命周期鉤子

onMounted()
onUpdated()
onUnmounted()
onBeforeMount()
onBeforeUpdate()
onBeforeUnmount()
onActivated()
onDeactivated()
onServerPrefetch()

2.新的生命周期鉤子

//1.onErrorCaptured():注冊一個鉤子,在捕獲了后代組件傳遞的錯誤時調(diào)用。
function onErrorCaptured(callback: ErrorCapturedHook): void
type ErrorCapturedHook = (
  err: unknown,
  instance: ComponentPublicInstance | null,
  info: string
) => boolean | void
//2.onRenderTracked():注冊一個調(diào)試鉤子,當組件渲染過程中追蹤到響應式依賴時調(diào)用。 
function onRenderTracked(callback: DebuggerHook): void
type DebuggerHook = (e: DebuggerEvent) => void
type DebuggerEvent = {
  effect: ReactiveEffect
  target: object
  type: TrackOpTypes /* 'get' | 'has' | 'iterate' */
  key: any
}
//3.onRenderTriggered():注冊一個調(diào)試鉤子,當響應式依賴的變更觸發(fā)了組件渲染時調(diào)用。
function onRenderTriggered(callback: DebuggerHook): void
type DebuggerHook = (e: DebuggerEvent) => void
type DebuggerEvent = {
  effect: ReactiveEffect
  target: object
  type: TriggerOpTypes /* 'set' | 'add' | 'delete' | 'clear' */
  key: any
  newValue?: any
  oldValue?: any
  oldTarget?: Map<any, any> | Set<any>
}
//4.onServerPrefetch():注冊一個異步函數(shù),在組件實例在服務器上被渲染之前調(diào)用。
function onServerPrefetch(callback: () => Promise<any>): void
/**
補充:1.如果這個鉤子返回了一個 Promise,服務端渲染會在渲染該組件前等待該 Promise 完成。
      2.這個鉤子僅會在服務端渲染中執(zhí)行,可以用于執(zhí)行一些僅存在于服務端的數(shù)據(jù)抓取過程
*/
//試例:
<script setup>
import { ref, onServerPrefetch, onMounted } from 'vue'
const data = ref(null)
onServerPrefetch(async () => {
  // 組件作為初始請求的一部分被渲染
  // 在服務器上預抓取數(shù)據(jù),因為它比在客戶端上更快。
  data.value = await fetchOnServer(/* ... */)
})
onMounted(async () => {
  if (!data.value) {
    // 如果數(shù)據(jù)在掛載時為空值,這意味著該組件
    // 是在客戶端動態(tài)渲染的。將轉(zhuǎn)而執(zhí)行
    // 另一個客戶端側(cè)的抓取請求
    data.value = await fetchOnClient(/* ... */)
  }
})
</script>

九: 解決沒有this + 各種api的方法

  • 在Vue2項目中可以使用this.$router.push等方法進行路由的跳轉(zhuǎn),但是在Vue3的setup函數(shù)里,并沒有this這個概念,因此如何使用路由方法
// 在新的vue-router里面尤大加入了一些方法,比如這里代替this的useRouter,具體使用如下:
//引入路由函數(shù)
import { useRouter } from "vue-router";
//使用
setup() {
    //初始化路由
    const router = useRouter();
    router.push({
        path: "/"
    });
    return {};
}
  • 在vue2中可以通過this來訪問到$refs,vue3中由于沒有this所以獲取不到了,但是官網(wǎng)中提供了方法來獲取:
<template>
  <h2 ref="root">姓名</h2>
</template>
<script>
    //使用setup的注意事項
    import { onMounted, ref } from 'vue'
    export default {
        name: 'test9',
        setup(){
            const root  = ref(null)
            onMounted(()=>{
                console.log(root.value);
            })
            return {
                root
            }
        },
    }
</script>
//第二種方法,也可以通過getCurrentInstance來獲取
<template>
  <h2 ref="root">姓名</h2>
</template>
<script>
    //使用setup的注意事項
    import { onMounted, ref, getCurrentInstance } from 'vue'
    export default {
        name: 'test9',
        setup(){)
            const {proxy} = getCurrentInstance()
            onMounted(()=>{
                console.log(proxy.$refs.root);
            })
            return {
            }
        },
    }
</script>
  • 關于element在vue3的使用方法,沒有this.$message等方法解決方案
//關于element在vue3的使用方法,沒有this.$message等方法解決方案
<template>
  <!-- 測試組件 -->
  <button @click="doLogin">登錄</button>
</template>
<script>
import { getCurrentInstance } from 'vue'
export default {
  name: 'Test',
  setup () {
    const instance = getCurrentInstance() // vue3提供的方法,創(chuàng)建類似于this的實例
    const doLogin = () => {
      instance.proxy.$message({ type: 'error', text: '登錄失敗' }) // 類似于this.$message()
    }
    return { doLogin }
  },
   // 如果想試用this.$message,須在mounted鉤子函數(shù)中,setup中沒有this實例,
   //但vue3.0中還是建議在setup函數(shù)中進行邏輯操作
  mounted () {
    this.$message({ type: 'error', text: '登錄失敗' })
  }
}
</script>

相關文章

  • vue-cli3 karma單元測試的實現(xiàn)

    vue-cli3 karma單元測試的實現(xiàn)

    這篇文章主要介紹了vue-cli3 karma單元測試的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 基于vue打包后字體和圖片資源失效問題的解決方法

    基于vue打包后字體和圖片資源失效問題的解決方法

    下面小編就為大家分享一篇基于vue打包后字體和圖片資源失效問題的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue3實現(xiàn)獲取驗證碼按鈕倒計時效果

    Vue3實現(xiàn)獲取驗證碼按鈕倒計時效果

    這篇文章主要介紹了Vue3實現(xiàn)獲取驗證碼按鈕倒計時效果,用戶點擊獲取驗證碼按鈕,發(fā)送請求給后端,按鈕失效,并且開始倒計時60秒;在此期間,用戶無法再次點擊按鈕,即使用戶刷新頁面,倒計時依然存在,直到倒計時完畢,按鈕恢復,感興趣的小伙伴跟著小編一起來看看吧
    2024-10-10
  • VUE項目中加載已保存的筆記實例方法

    VUE項目中加載已保存的筆記實例方法

    在本篇文章里小編給大家整理了一篇關于VUE項目中加載已保存的筆記實例方法,有興趣的讀者們可以參考下。
    2019-09-09
  • vue視頻時間進度條組件使用方法詳解

    vue視頻時間進度條組件使用方法詳解

    這篇文章主要為大家詳細介紹了vue視頻時間進度條組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue解析Json數(shù)據(jù)獲取Json里面的多個id問題

    vue解析Json數(shù)據(jù)獲取Json里面的多個id問題

    這篇文章主要介紹了vue解析Json數(shù)據(jù)獲取Json里面的多個id問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Vue3視頻播放器組件Vue3-video-play新手入門教程

    Vue3視頻播放器組件Vue3-video-play新手入門教程

    這篇文章主要給大家介紹了關于Vue3視頻播放器組件Vue3-video-play新手入門教程的相關資料,本文實例為大家分享了vue-video-player視頻播放器的使用配置,供大家參考,需要的朋友可以參考下
    2023-12-12
  • Vue實現(xiàn)項目部署到非根目錄及解決刷新頁面時找不到資源

    Vue實現(xiàn)項目部署到非根目錄及解決刷新頁面時找不到資源

    這篇文章主要介紹了Vue實現(xiàn)項目部署到非根目錄及解決刷新頁面時找不到資源問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue波紋按鈕組件制作

    Vue波紋按鈕組件制作

    本文給大家分享了VUE制作點擊按鈕出現(xiàn)水波紋效果的組件過程,對此有需求的朋友可以跟著學習下。
    2018-04-04
  • 基于Vue2x的圖片預覽插件的示例代碼

    基于Vue2x的圖片預覽插件的示例代碼

    本篇文章主要介紹了基于Vue2x的圖片預覽插件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論

久久久精品999精品日本| 欧美一区二区中文字幕电影| 亚洲变态另类色图天堂网| 亚洲国产40页第21页| 同居了嫂子在线播高清中文| 97超碰人人搞人人| 中文字幕国产专区欧美激情| 青青擦在线视频国产在线| 国产欧美精品不卡在线| 99久久久无码国产精品性出奶水| 狠狠操狠狠操免费视频| 欧美亚洲一二三区蜜臀| 91人妻精品一区二区久久| 中文字幕日韩无敌亚洲精品| 国产丰满熟女成人视频| 又色又爽又黄又刺激av网站| 中文字幕 亚洲av| 91精品国产综合久久久蜜| 99视频精品全部15| 国产清纯美女al在线| 18禁美女无遮挡免费| 青青青青青青青在线播放视频| 天天日天天敢天天干| 久久久久久久久久一区二区三区| aaa久久久久久久久| 国产精品亚洲在线观看| 成人资源在线观看免费官网| 亚洲2021av天堂| 国产麻豆精品人妻av| 四虎永久在线精品免费区二区 | 经典亚洲伊人第一页| 亚洲日本一区二区久久久精品| 免费在线看的黄网站| 97超碰最新免费在线观看| 99精品久久久久久久91蜜桃| 亚洲第17页国产精品| 熟女91pooyn熟女| 天天射,天天操,天天说| 男人的网址你懂的亚洲欧洲av| 人妻少妇一区二区三区蜜桃| 天天做天天干天天舔| 亚洲高清国产一区二区三区| 亚洲一区二区三区偷拍女厕91| 噜噜色噜噜噜久色超碰| 91社福利《在线观看| 大香蕉大香蕉在线有码 av| 免费岛国喷水视频在线观看 | 沈阳熟妇28厘米大战黑人| 精品国产高潮中文字幕| 亚洲精品在线资源站| 天天做天天干天天舔| 亚洲高清免费在线观看视频| 懂色av蜜桃a v| 蜜臀成人av在线播放| 免费在线观看污污视频网站| 在线免费观看日本伦理| 亚洲黄色av网站免费播放| 精品av国产一区二区三区四区 | 91老师蜜桃臀大屁股| 影音先锋女人av噜噜色| 青青青青青青青在线播放视频| 欧美日韩亚洲国产无线码| 久草极品美女视频在线观看 | 2o22av在线视频| 啊啊啊想要被插进去视频| 亚洲国产欧美一区二区三区…| 久久久久久久99精品| 亚洲精品乱码久久久本| 啪啪啪啪啪啪啪免费视频| 亚洲国产欧美国产综合在线| 日本黄在免费看视频| 操操网操操伊剧情片中文字幕网| 欧美日韩在线精品一区二区三| 久久久久久久久久性潮| 91she九色精品国产| AV无码一区二区三区不卡| 中文 成人 在线 视频| 精品久久久久久久久久中文蒉| 日本美女成人在线视频| 中文字幕成人日韩欧美| 免费黄高清无码国产| 黑人3p华裔熟女普通话| 人妻少妇精品久久久久久| 国产欧美精品不卡在线| 亚洲推理片免费看网站| av乱码一区二区三区| 亚洲精品 日韩电影| 男人靠女人的逼视频| 免费在线观看视频啪啪| 涩爱综合久久五月蜜臀| 色在线观看视频免费的| 真实国模和老外性视频| 在线观看国产免费麻豆| 91久久综合男人天堂| 熟女少妇激情五十路| 丝袜美腿视频诱惑亚洲无| 国产亚洲精品欧洲在线观看| 天堂av在线播放免费| 黄色大片男人操女人逼| 久久机热/这里只有| 中文字幕一区二 区二三区四区| 亚洲高清一区二区三区视频在线| 熟女在线视频一区二区三区| 视频一区 视频二区 视频| 99久久超碰人妻国产| 人人妻人人澡欧美91精品| 丁香花免费在线观看中文字幕| 欧美亚洲免费视频观看| 人妻3p真实偷拍一二区| 久久一区二区三区人妻欧美| 国产夫妻视频在线观看免费 | 绯色av蜜臀vs少妇| 天天操天天爽天天干| 一区二区三区蜜臀在线| 亚洲特黄aaaa片| 亚洲视频在线观看高清| 国产亚洲欧美视频网站| 亚洲av成人网在线观看| 日本黄色特一级视频| 亚洲1区2区3区精华液| 精品国产在线手机在线| 在线免费观看靠比视频的网站 | 三级av中文字幕在线观看| 精品亚洲中文字幕av| 亚洲欧美另类手机在线| 农村胖女人操逼视频| 99国内小视频在现欢看| 日韩欧美国产一区不卡| 在线免费观看av日韩| 欧美日韩精品永久免费网址 | 中文 成人 在线 视频| 色综合久久无码中文字幕波多| 91高清成人在线视频| 大香蕉玖玖一区2区| 伊人日日日草夜夜草| 40道精品招牌菜特色| 国产福利小视频免费观看| 91麻豆精品传媒国产黄色片| 久久精品亚洲国产av香蕉| 97人妻无码AV碰碰视频| 啊啊好大好爽啊啊操我啊啊视频| 天天爽夜夜爽人人爽QC| 免费在线播放a级片| 黄网十四区丁香社区激情五月天| 精品一区二区三区在线观看| 日韩中文字幕在线播放第二页| 日本一二三中文字幕| 久久久久久久精品老熟妇| 性欧美日本大妈母与子| 男人天堂av天天操| 亚洲国产中文字幕啊啊啊不行了| 亚洲av一妻不如妾| 女同久久精品秋霞网| 天天日天天干天天舔天天射| 无码日韩人妻精品久久| 午夜91一区二区三区| 视频 一区二区在线观看| 超碰中文字幕免费观看| 成年人该看的视频黄免费| 2021年国产精品自拍| 福利视频广场一区二区| 亚洲欧美福利在线观看| 家庭女教师中文字幕在线播放| 欲满人妻中文字幕在线| 91中文字幕最新合集| 韩国女主播精品视频网站| 成年人黄色片免费网站| 亚洲 中文字幕在线 日韩| 操的小逼流水的文章| 九色porny九色9l自拍视频| 九一传媒制片厂视频在线免费观看| 日韩精品中文字幕播放| 日本高清成人一区二区三区 | 粉嫩小穴流水视频在线观看| 亚洲欧美在线视频第一页| 黑人解禁人妻叶爱071| 国产福利小视频免费观看| 新婚人妻聚会被中出| 在线免费91激情四射| 日本一道二三区视频久久| 日韩欧美制服诱惑一区在线| 天天日天天干天天干天天日| 班长撕开乳罩揉我胸好爽| 天天干天天操天天扣| 免费岛国喷水视频在线观看 | 99精品视频之69精品视频| 欧美另类z0z变态| 天天插天天色天天日| gogo国模私拍视频| 欧美日韩一级黄片免费观看| 亚洲欧美一区二区三区爱爱动图| 亚洲av日韩av网站| 岛国一区二区三区视频在线| 美女福利视频网址导航| 888欧美视频在线| 538精品在线观看视频| 欧美aa一级一区三区四区| 国产精品久久久久网| 国产一区自拍黄视频免费观看| 国产精品探花熟女在线观看 | 91一区精品在线观看| 国产亚洲视频在线二区| 无码中文字幕波多野不卡| 五十路丰满人妻熟妇| 天天日天天干天天要| 亚洲成人线上免费视频观看| 美日韩在线视频免费看| 99久久超碰人妻国产| 久久久精品999精品日本| 18禁免费av网站| 888欧美视频在线| 五十路丰满人妻熟妇| 视频一区二区在线免费播放| 国产视频精品资源网站| 免费高清自慰一区二区三区网站| 宅男噜噜噜666国产| 国产亚州色婷婷久久99精品| av成人在线观看一区| 国产视频精品资源网站| 福利在线视频网址导航| 国产又粗又黄又硬又爽| 动漫黑丝美女的鸡巴| 亚洲精品中文字幕下载| 欧美成人小视频在线免费看| 在线 中文字幕 一区| 福利国产视频在线观看| 欧美成一区二区三区四区| 国产精品自偷自拍啪啪啪| 夫妻在线观看视频91| 日本黄色三级高清视频| 97国产在线观看高清| 精品91自产拍在线观看一区| 在线免费观看亚洲精品电影 | 91久久国产成人免费网站| 99久久久无码国产精品性出奶水 | 成年午夜影片国产片| 午夜精品在线视频一区| 亚洲av极品精品在线观看| 日韩少妇人妻精品无码专区| aaa久久久久久久久| 一区二区三区四区视频| 黑人3p华裔熟女普通话| 天天日天天日天天擦| 成人sm视频在线观看| 欧美爆乳肉感大码在线观看 | 日本熟妇喷水xxx| 免费在线播放a级片| 在线播放国产黄色av| 少妇露脸深喉口爆吞精| 521精品视频在线观看| 超鹏97历史在线观看| 视频一区 视频二区 视频| 青青青青青青青在线播放视频| 国产福利小视频二区| 亚洲美女自偷自拍11页| 夜色福利视频在线观看| 国产自拍在线观看成人| 欧美专区日韩专区国产专区| 日本av高清免费网站| 男人的天堂在线黄色| 肏插流水妹子在线乐播下载| av无限看熟女人妻另类av| 日韩视频一区二区免费观看| 91精品啪在线免费| 亚洲最大黄了色网站| 日噜噜噜夜夜噜噜噜天天噜噜噜| 亚洲av香蕉一区区二区三区犇| 91香蕉成人app下载| 51国产偷自视频在线播放| 欧美熟妇一区二区三区仙踪林| 老师啊太大了啊啊啊尻视频| 久久精品国产亚洲精品166m| 国产精品黄大片在线播放| 国产日韩精品免费在线| 搞黄色在线免费观看| 少妇人妻久久久久视频黄片| 女同性ⅹxx女同h偷拍| 999九九久久久精品| 精品高潮呻吟久久av| 18禁免费av网站| 91精品国产91青青碰| 97超碰人人搞人人| 欧美激情精品在线观看| 超碰在线观看免费在线观看| 最新国产亚洲精品中文在线| 免费观看理论片完整版| 春色激情网欧美成人| 欧美一区二区三区乱码在线播放| 婷婷午夜国产精品久久久| 中文字幕人妻一区二区视频| 夜女神免费福利视频| 五月激情婷婷久久综合网| 班长撕开乳罩揉我胸好爽| 99精品国自产在线人| 日本av在线一区二区三区| 噜噜色噜噜噜久色超碰| 美女视频福利免费看| 免费高清自慰一区二区三区网站| 中文字幕在线乱码一区二区| 好男人视频在线免费观看网站| 精品一线二线三线日本| 夜夜操,天天操,狠狠操| 国产又粗又黄又硬又爽| 99精品国产aⅴ在线观看| 久久热久久视频在线观看| 蜜桃精品久久久一区二区| 任我爽精品视频在线播放| 亚洲免费av在线视频| 中文字幕人妻一区二区视频| 亚洲福利天堂久久久久久| 亚洲精品成人网久久久久久小说| 久久久91蜜桃精品ad| 欧美性感尤物人妻在线免费看| 18禁精品网站久久| 天天日天天敢天天干| 国产91精品拍在线观看| 亚洲精品麻豆免费在线观看| 99国内小视频在现欢看| 国内精品在线播放第一页| 免费国产性生活视频| 欧亚乱色一区二区三区| 粉嫩欧美美人妻小视频| 青青青青青青青在线播放视频| 色呦呦视频在线观看视频| 爆乳骚货内射骚货内射在线| 综合页自拍视频在线播放| 色综合天天综合网国产成人| 视频在线亚洲一区二区| 香蕉aⅴ一区二区三区| 动色av一区二区三区| 天天日天天爽天天爽| 亚洲一区二区三区av网站| 2012中文字幕在线高清| 自拍偷拍日韩欧美一区二区| 婷婷色国产黑丝少妇勾搭AV| 亚洲 欧美 精品 激情 偷拍 | 成人av在线资源网站| 好男人视频在线免费观看网站| 日韩视频一区二区免费观看| 青青青国产免费视频| 国产chinesehd精品麻豆| 岛国青草视频在线观看| 黄色中文字幕在线播放| 爱爱免费在线观看视频| 涩爱综合久久五月蜜臀| 日韩美女综合中文字幕pp| 岛国青草视频在线观看| av俺也去在线播放| free性日本少妇| 日本男女操逼视频免费看| 国产精品国产三级国产午| 日韩欧美亚洲熟女人妻| 国产午夜无码福利在线看| 熟女在线视频一区二区三区| 9色在线视频免费观看| 三级黄色亚洲成人av| 欧洲日韩亚洲一区二区三区| 欧美久久久久久三级网| mm131美女午夜爽爽爽| 大鸡八强奸视频在线观看| 99久久成人日韩欧美精品| 黄色无码鸡吧操逼视频| 91久久国产成人免费网站| 自拍偷拍日韩欧美一区二区| 天天躁日日躁狠狠躁躁欧美av| 超级碰碰在线视频免费观看| 亚洲欧美国产综合777| 老司机福利精品视频在线| 日韩不卡中文在线视频网站| 在线新三级黄伊人网| 女同互舔一区二区三区| 老司机99精品视频在线观看| 老司机福利精品视频在线| 亚洲国产精品久久久久久6| 二区中出在线观看老师| 中文字幕无码一区二区免费| 超污视频在线观看污污污| 夜夜嗨av一区二区三区中文字幕| 欧美视频一区免费在线| 成人av电影免费版| 天天摸天天亲天天舔天天操天天爽| 亚洲精品久久视频婷婷| 亚洲免费视频欧洲免费视频| 人妻在线精品录音叫床| 1000部国产精品成人观看视频| 91免费福利网91麻豆国产精品| 免费无码人妻日韩精品一区二区| 人妻久久久精品69系列| 欧美在线一二三视频| 在线视频国产欧美日韩| 久久久久久久精品老熟妇| 激情人妻校园春色亚洲欧美 | 视频二区在线视频观看| 色综合久久久久久久久中文| 亚洲成人av一区久久| 日本后入视频在线观看| 精品国产午夜视频一区二区| 蜜臀成人av在线播放| 欧美国品一二三产区区别| 免费看国产又粗又猛又爽又黄视频 | 日韩av大胆在线观看| 亚洲视频乱码在线观看| 天天日天天操天天摸天天舔 | 阴茎插到阴道里面的视频| 精品国产高潮中文字幕| 香港一级特黄大片在线播放| 国产精品手机在线看片| 男人天堂av天天操| 久久久久久性虐视频| 午夜精品久久久久久99热| 午夜精品一区二区三区福利视频| 国产日韩精品电影7777| 青青青视频自偷自拍38碰| 亚洲精品午夜久久久久| 日韩成人性色生活片| 黄色视频成年人免费观看| 欧美亚洲国产成人免费在线| 沙月文乃人妻侵犯中文字幕在线| 日本啪啪啪啪啪啪啪| 欧美男人大鸡吧插女人视频| 粗大的内捧猛烈进出爽大牛汉子| av成人在线观看一区| 日本熟女精品一区二区三区| 亚洲精品久久综合久| 内射久久久久综合网| 少妇高潮无套内谢麻豆| 中文字幕亚洲久久久| 中文字幕一区二 区二三区四区 | 欧美 亚洲 另类综合| 97人人妻人人澡人人爽人人精品| 熟女妇女老妇一二三区| 偷拍自拍亚洲视频在线观看| 夜夜嗨av蜜臀av| 精品一区二区三四区| 亚洲第一黄色在线观看| 免费十精品十国产网站| 激情小视频国产在线| 日本一道二三区视频久久| 日本福利午夜电影在线观看| 国产精品自拍视频大全| 污污小视频91在线观看| 免费一级特黄特色大片在线观看| 欧美特色aaa大片| 欧洲国产成人精品91铁牛tv| 国产成人精品av网站| 粗大的内捧猛烈进出爽大牛汉子| 日韩欧美国产精品91| 青青擦在线视频国产在线| 亚洲精品一线二线在线观看| 国产又粗又硬又大视频| 久久久久久久精品老熟妇| 一区二区三区综合视频| 乱亲女秽乱长久久久| 欧美麻豆av在线播放| 国产精品成久久久久三级蜜臀av| 鸡巴操逼一级黄色气| 国产视频一区在线观看| 粉嫩av蜜乳av蜜臀| 护士小嫩嫩又紧又爽20p| 久久艹在线观看视频| 中文字幕一区二 区二三区四区 | 亚洲视频乱码在线观看| 国产精品视频欧美一区二区| 亚洲综合一区成人在线| 91亚洲精品干熟女蜜桃频道 | 精品一区二区三区欧美| 天天干天天啪天天舔| 中文字幕高清在线免费播放| 熟女妇女老妇一二三区| 日韩黄色片在线观看网站| 老司机午夜精品视频资源| 沙月文乃人妻侵犯中文字幕在线| 在线观看免费视频色97| 国产一区二区欧美三区| 亚洲最大黄 嗯色 操 啊| 精品一区二区亚洲欧美| 自拍偷拍亚洲另类色图| 天天爽夜夜爽人人爽QC| 自拍偷区二区三区麻豆| 欧美日韩一区二区电影在线观看| 亚洲天堂精品久久久| 视频在线免费观看你懂得| 2021年国产精品自拍| 亚洲激情av一区二区| 免费福利av在线一区二区三区| 在线成人日韩av电影| av乱码一区二区三区| 中文字幕日韩精品就在这里| 爱爱免费在线观看视频| 成熟丰满熟妇高潮xx×xx| 经典亚洲伊人第一页| 黄色片一级美女黄色片| 久久精品国产999| 国产使劲操在线播放| av在线资源中文字幕| 成人影片高清在线观看| 一本久久精品一区二区| 亚洲午夜伦理视频在线| 亚洲最大免费在线观看| 午夜精品一区二区三区福利视频| 亚洲av成人网在线观看| 一二三区在线观看视频| 亚洲人妻国产精品综合| 国产又粗又硬又猛的毛片视频| 日日摸夜夜添夜夜添毛片性色av| 超级av免费观看一区二区三区| 1024久久国产精品| 日韩人妻在线视频免费| 99精品视频之69精品视频 | 噜噜色噜噜噜久色超碰| 97国产在线观看高清| 在线免费91激情四射| 777奇米久久精品一区| 大陆精品一区二区三区久久| 男生舔女生逼逼视频| 国产免费av一区二区凹凸四季| 欧美日本国产自视大全| av完全免费在线观看av| av手机免费在线观看高潮| 9国产精品久久久久老师| 亚洲久久午夜av一区二区| 日辽宁老肥女在线观看视频| 91免费福利网91麻豆国产精品 | 天天干天天日天天干天天操| 18禁美女无遮挡免费| 中文字幕高清在线免费播放 | 国产欧美精品不卡在线| 免费岛国喷水视频在线观看| 国产欧美日韩第三页| 欧美在线精品一区二区三区视频 | 日本在线一区二区不卡视频| 亚洲国产在人线放午夜| 久久精品亚洲成在人线a| 午夜激情精品福利视频| 好了av中文字幕在线| 2020久久躁狠狠躁夜夜躁 | 亚洲成人激情视频免费观看了| 欧洲日韩亚洲一区二区三区| 午夜的视频在线观看| 91色秘乱一区二区三区| 亚洲精品国产久久久久久| 一级黄色片夫妻性生活| 99热久久极品热亚洲| 欧美专区第八页一区在线播放| 视频一区 二区 三区 综合| 91亚洲国产成人精品性色| 欧美日韩激情啪啪啪| 久久久极品久久蜜桃| 777奇米久久精品一区| 经典国语激情内射视频| 欧美特色aaa大片| 日韩精品二区一区久久| 91国产在线免费播放| 五十路av熟女松本翔子| 欧美一区二区中文字幕电影| 曰本无码人妻丰满熟妇啪啪| 色哟哟国产精品入口| 国产精品久久久久久久精品视频| 亚洲精品 日韩电影| 亚洲精品在线资源站| 欧美精品国产综合久久| 最近的中文字幕在线mv视频| 国产在线拍揄自揄视频网站| 欧美色婷婷综合在线| 久久精品亚洲成在人线a| 日本熟女精品一区二区三区| 国产卡一卡二卡三乱码手机| 成人av免费不卡在线观看| 偷青青国产精品青青在线观看| 日韩三级黄色片网站| 年轻的人妻被夫上司侵犯| 国产黄色a级三级三级三级| 玖玖一区二区在线观看| 人妻少妇av在线观看| 一区二区三区精品日本| 真实国产乱子伦一区二区| 天天日天天干天天要| 久久久久国产成人精品亚洲午夜| 亚洲一区二区三区久久受| 成人影片高清在线观看| av俺也去在线播放| 亚洲2021av天堂| 天天干天天爱天天色| 无码国产精品一区二区高潮久久4 日韩欧美一级精品在线观看 | 51国产偷自视频在线播放| 综合国产成人在线观看| 人人人妻人人澡人人| 欧美精品黑人性xxxx| 天天操天天操天天碰| 国产97在线视频观看| 晚上一个人看操B片| 神马午夜在线观看视频| 黄色的网站在线免费看| 97a片免费在线观看| 99av国产精品欲麻豆| 不卡日韩av在线观看| 六月婷婷激情一区二区三区| 中文字幕亚洲久久久| 中文字幕高清在线免费播放| 中文字幕 亚洲av| 欧美亚洲免费视频观看| 99热久久这里只有精品| 亚洲欧美一区二区三区电影| 国产精品国产三级国产精东| 精品一区二区三区三区色爱| 国产精品免费不卡av| 一区国内二区日韩三区欧美| 免费无毒热热热热热热久| 国产性感美女福利视频| 中文字幕一区二区人妻电影冢本 | 天天日天天干天天爱| 亚洲一区二区三区uij| 黑人借宿ntr人妻的沦陷2| 97年大学生大白天操逼| 老司机深夜免费福利视频在线观看| 可以免费看的www视频你懂的| 偷青青国产精品青青在线观看| 一区二区视频在线观看免费观看| 欧美在线偷拍视频免费看| 欧美日韩不卡一区不区二区| av老司机精品在线观看| 天堂资源网av中文字幕| 日本三极片中文字幕| 亚洲色偷偷综合亚洲AV伊人 | 日韩一区二区电国产精品| 亚洲av男人天堂久久| 日本女大学生的黄色小视频| 综合精品久久久久97| 2022国产综合在线干| 专门看国产熟妇的网站| 91精品一区二区三区站长推荐| 综合激情网激情五月天| 中文字幕最新久久久| 精品国产在线手机在线| 欧美另类一区二区视频| 中文字幕人妻av在线观看| 精品少妇一二三视频在线| 国产91久久精品一区二区字幕| 国产97在线视频观看| 色婷婷六月亚洲综合香蕉| 蜜臀av久久久久蜜臀av麻豆| 亚洲国产精品黑丝美女| 97精品视频在线观看| 日韩近亲视频在线观看| 激情内射在线免费观看| 在线观看的黄色免费网站| 久久久久久久久久久免费女人| 精品人人人妻人人玩日产欧| 动色av一区二区三区| 99精品免费久久久久久久久a| 亚洲精品成人网久久久久久小说 | 亚洲成人精品女人久久久| 天天躁夜夜躁日日躁a麻豆| 久久精品36亚洲精品束缚| 国产精品久久9999| 亚洲在线免费h观看网站| 黄色成人在线中文字幕| 欧美精品 日韩国产| AV无码一区二区三区不卡| 含骚鸡巴玩逼逼视频| 国产又粗又硬又猛的毛片视频| 国产乱子伦一二三区| 日韩在线视频观看有码在线| 国产精品入口麻豆啊啊啊| 国产日韩av一区二区在线| 亚洲精品国品乱码久久久久| 美女福利视频导航网站| 2020av天堂网在线观看| 男女之间激情网午夜在线| 国产久久久精品毛片| 人妻少妇一区二区三区蜜桃| 在线亚洲天堂色播av电影| 午夜免费观看精品视频| 欧美激情电影免费在线| 黄网十四区丁香社区激情五月天 | 97少妇精品在线观看| 成人国产影院在线观看| 日曰摸日日碰夜夜爽歪歪| 欧美韩国日本国产亚洲| 日本男女操逼视频免费看| 亚洲av色图18p| 亚洲人人妻一区二区三区| 亚洲精品色在线观看视频| 黑人性生活视频免费看| 亚洲丝袜老师诱惑在线观看| 粉嫩av蜜乳av蜜臀| 亚洲激情av一区二区| 国产精品自偷自拍啪啪啪| 蜜桃久久久久久久人妻| 四川五十路熟女av| japanese日本熟妇另类| 久久精品亚洲成在人线a| 人妻3p真实偷拍一二区| 亚洲免费在线视频网站| 午夜美女少妇福利视频| 97a片免费在线观看| 边摸边做超爽毛片18禁色戒| 亚洲精品一线二线在线观看| 日韩美女精品视频在线观看网站 | 成人国产激情自拍三区| 天天操,天天干,天天射| 亚洲国产精品免费在线观看| 亚洲免费国产在线日韩| 亚洲福利天堂久久久久久| 自拍偷拍,中文字幕| 男生舔女生逼逼视频| 18禁精品网站久久| 美女小视频网站在线| 成年女人免费播放视频| 中文字幕AV在线免费看 | 91国产资源在线视频| 人妻爱爱 中文字幕| gogo国模私拍视频| 91精品综合久久久久3d动漫 | 天天日天天操天天摸天天舔| 亚洲午夜在线视频福利| 亚洲一区二区人妻av| rct470中文字幕在线| 成人精品视频99第一页| 久草免费人妻视频在线| 看一级特黄a大片日本片黑人| 538精品在线观看视频| 欧美天堂av无线av欧美| 综合激情网激情五月天| 伊人成人在线综合网| 高清成人av一区三区| 精产国品久久一二三产区区别 | 亚洲一区二区三区久久午夜| 五十路在线观看完整版| 九色精品视频在线播放| 国产九色91在线视频| 亚洲国产中文字幕啊啊啊不行了| av俺也去在线播放| 国产精品自拍偷拍a| 午夜影院在线观看视频羞羞羞| 老司机在线精品福利视频| 国产成人精品一区在线观看| 成年人免费看在线视频| 欧美综合婷婷欧美综合| 人妻丰满熟妇综合网| aiss午夜免费视频| 九色精品视频在线播放| 都市激情校园春色狠狠| 啊啊啊视频试看人妻| 内射久久久久综合网| 亚洲免费福利一区二区三区| 亚洲2021av天堂| 精品一线二线三线日本| 中文字幕av第1页中文字幕| 一区二区麻豆传媒黄片| 少妇人妻真实精品视频| 亚洲精品高清自拍av | 日本一二三中文字幕| 人妻爱爱 中文字幕| 亚洲一区二区三区精品视频在线| 国产亚洲天堂天天一区| 这里只有精品双飞在线播放| 超碰在线观看免费在线观看| 亚洲 欧美 精品 激情 偷拍| 天天色天天舔天天射天天爽| 天天操,天天干,天天射| 国产麻豆国语对白露脸剧情| 日本韩国亚洲综合日韩欧美国产| h国产小视频福利在线观看| 国产亚洲四十路五十路| 日韩欧美亚洲熟女人妻| 欧美黑人与人妻精品| 大尺度激情四射网站| av亚洲中文天堂字幕网| 在线观看的a站 最新| 亚洲国产香蕉视频在线播放| 在线可以看的视频你懂的| 久草免费人妻视频在线| 欲乱人妻少妇在线视频裸| 天天夜天天日天天日| 在线观看视频一区麻豆| 国产精品女邻居小骚货| 99re久久这里都是精品视频| 大尺度激情四射网站| 国产精品成人xxxx| 国产黄色片蝌蚪九色91| 久青青草视频手机在线免费观看| 91中文字幕最新合集| 老熟妇xxxhd老熟女| eeuss鲁片一区二区三区| 91欧美在线免费观看| 成人久久精品一区二区三区| 欧美韩国日本国产亚洲| 精品国产亚洲av一淫| 国内自拍第一页在线观看| 亚洲男人的天堂a在线| 91www一区二区三区| 亚洲欧美日韩视频免费观看| 在线免费观看黄页视频| 91成人在线观看免费视频| 三级av中文字幕在线观看| 色在线观看视频免费的| 可以免费看的www视频你懂的| 九色精品视频在线播放| 久久久极品久久蜜桃| 精品久久婷婷免费视频| mm131美女午夜爽爽爽| 午夜激情精品福利视频| 91九色国产porny蝌蚪| 亚洲国产香蕉视频在线播放| 偷拍自拍视频图片免费| 国产精品3p和黑人大战| 2020久久躁狠狠躁夜夜躁| 日韩国产乱码中文字幕| 亚洲av日韩av网站| 日韩av熟妇在线观看| 摧残蹂躏av一二三区| 风流唐伯虎电视剧在线观看| 精彩视频99免费在线| 无套猛戳丰满少妇人妻| 岛国黄色大片在线观看| 大黑人性xxxxbbbb| 日韩精品电影亚洲一区| 直接能看的国产av| 91精品国产麻豆国产| 欧洲精品第一页欧洲精品亚洲| 中文字幕AV在线免费看 | 亚洲在线免费h观看网站| 女同互舔一区二区三区| 国产精品手机在线看片| 成人av在线资源网站| 2020av天堂网在线观看| 偷青青国产精品青青在线观看| 在线不卡成人黄色精品| 国产成人精品午夜福利训2021| 免费在线观看污污视频网站| h国产小视频福利在线观看| 天天操天天干天天日狠狠插| 国产精品亚洲在线观看| 在线视频自拍第三页| brazzers欧熟精品系列| 欧美黑人性猛交xxxxⅹooo| 91桃色成人网络在线观看| 久久精品国产999| 在线观看免费av网址大全| 最后99天全集在线观看| 91人妻人人做人人爽在线| 岛国黄色大片在线观看| 亚洲1069综合男同| 19一区二区三区在线播放| 国产夫妻视频在线观看免费| 色秀欧美视频第一页| 播放日本一区二区三区电影| 亚洲一区二区久久久人妻| 国产日本精品久久久久久久| 午夜频道成人在线91| 亚洲中文字字幕乱码| 精品视频一区二区三区四区五区| 特大黑人巨大xxxx| 国产+亚洲+欧美+另类| 国产一线二线三线的区别在哪| 区一区二区三国产中文字幕| 女生自摸在线观看一区二区三区| 97成人免费在线观看网站| 大屁股熟女一区二区三区| 日日夜夜精品一二三| 国产精品精品精品999| 91精品综合久久久久3d动漫| 手机看片福利盒子日韩在线播放| www久久久久久久久久久| 国产大学生援交正在播放| 成人国产激情自拍三区| 97人人模人人爽人人喊| 91国语爽死我了不卡| 国产精品自拍偷拍a| 亚洲1069综合男同| 亚洲成av人无码不卡影片一| 精彩视频99免费在线| 国产精品成久久久久三级蜜臀av| 国产精品午夜国产小视频| 少妇露脸深喉口爆吞精| 国产剧情演绎系列丝袜高跟| jiujiure精品视频在线| 在线免费观看国产精品黄色| 成熟熟女国产精品一区| 伊人精品福利综合导航| 人妻久久久精品69系列| 老师让我插进去69AV| 天天操夜夜骑日日摸| 亚洲成人av一区在线| 欧美一级视频一区二区| 熟女91pooyn熟女| 91久久国产成人免费网站| 大鸡巴插入美女黑黑的阴毛| 精品视频国产在线观看| 四川乱子伦视频国产vip| 美女在线观看日本亚洲一区| 亚洲va欧美va人人爽3p| 日本乱人一区二区三区| 2022天天干天天操| 中文字幕第1页av一天堂网| 亚洲综合另类精品小说| 欧美精品欧美极品欧美视频 | 欧美另类一区二区视频| 最新91九色国产在线观看| 韩国三级aaaaa高清视频| 国产精品一区二区三区蜜臀av| av在线免费资源站| 懂色av蜜桃a v| 日韩欧美中文国产在线| 97人妻色免费视频| 成熟熟女国产精品一区| lutube在线成人免费看| 美洲精品一二三产区区别| 天美传媒mv视频在线观看| 久久久久久久久久久久久97| 动漫精品视频在线观看| 国产黄色大片在线免费播放| 超级av免费观看一区二区三区| 中文字幕在线欧美精品| 九色视频在线观看免费| 国产超码片内射在线| 绯色av蜜臀vs少妇| 成人福利视频免费在线| 91色九色porny| 亚洲无线观看国产高清在线| 乱亲女秽乱长久久久| 国产极品精品免费视频| 精品国产在线手机在线| 天天日天天摸天天爱| 涩爱综合久久五月蜜臀| 国产av欧美精品高潮网站| 综合激情网激情五月五月婷婷| 国产精品久久9999| 亚洲激情av一区二区| 黄色成年网站午夜在线观看| 亚洲熟女女同志女同| 天天日天天干天天舔天天射| 亚洲高清国产拍青青草原| 国产麻豆精品人妻av| 天天射夜夜操综合网| 97a片免费在线观看| 中出中文字幕在线观看| 亚洲午夜在线视频福利| 黑人3p华裔熟女普通话| 日本一区精品视频在线观看| 在线播放一区二区三区Av无码| 少妇高潮一区二区三区| 男人的天堂在线黄色| 久久久精品999精品日本| 九色视频在线观看免费| 国产在线免费观看成人| 女同互舔一区二区三区| 亚洲成人线上免费视频观看| 91超碰青青中文字幕| 亚洲 国产 成人 在线| 偷青青国产精品青青在线观看| 97香蕉碰碰人妻国产樱花| 亚洲欧美综合另类13p| 视频一区二区三区高清在线| 天天日天天干天天要| 在线免费91激情四射| 天天日天天日天天射天天干| 成人免费公开视频无毒| 亚洲成人国产综合一区| 日视频免费在线观看| 亚洲国产精品美女在线观看| 国产精彩对白一区二区三区| 视频二区在线视频观看| 美女大bxxxx内射| 91人妻人人做人人爽在线| 美女张开腿让男生操在线看| 亚洲va国产va欧美精品88| 国产精品日韩欧美一区二区| 国产性感美女福利视频| 一区二区三区麻豆福利视频| 久久美欧人妻少妇一区二区三区| 免费岛国喷水视频在线观看| 久久尻中国美女视频| 亚洲av日韩av第一区二区三区| 色综合天天综合网国产成人| 亚洲av日韩av第一区二区三区| 年轻的人妻被夫上司侵犯| 北条麻妃高跟丝袜啪啪| 免费av岛国天堂网站| 干逼又爽又黄又免费的视频| 欧美熟妇一区二区三区仙踪林| 97国产福利小视频合集| 黑人乱偷人妻中文字幕| 91久久人澡人人添人人爽乱| 国产大学生援交正在播放| 成年人免费看在线视频| 一本久久精品一区二区| 国产91精品拍在线观看| 亚洲 图片 欧美 图片| 天天色天天舔天天射天天爽| 午夜精品久久久久久99热| 久久这里只有精品热视频| 家庭女教师中文字幕在线播放| 日本少妇高清视频xxxxx| 亚洲欧美清纯唯美另类| 国产视频一区在线观看| 偷青青国产精品青青在线观看| 免费成人va在线观看| 天天干夜夜操啊啊啊| 国产亚洲国产av网站在线| AV天堂一区二区免费试看| 农村胖女人操逼视频| 人妻另类专区欧美制服| 免费观看理论片完整版| 91社福利《在线观看| 日韩a级黄色小视频| 91精品国产91青青碰| 88成人免费av网站| av中文字幕在线导航| 欧美xxx成人在线| 狠狠躁夜夜躁人人爽天天天天97| 在线观看成人国产电影| 久久久极品久久蜜桃| 极品粉嫩小泬白浆20p主播| 激情国产小视频在线| 亚洲无码一区在线影院| 国产日韩精品电影7777| 久久久极品久久蜜桃| 欧美成人猛片aaaaaaa| 人妻最新视频在线免费观看| 高清成人av一区三区| 黄色视频成年人免费观看| 国产综合高清在线观看| 性欧美日本大妈母与子| 欧美亚洲少妇福利视频| 2020中文字幕在线播放| 最新国产精品网址在线观看| 日韩成人综艺在线播放| 97人妻无码AV碰碰视频| 91国产在线免费播放| 日韩人妻在线视频免费| 亚洲成人免费看电影| 欧洲日韩亚洲一区二区三区| 国产日韩精品一二三区久久久| 午夜dv内射一区区| 成人性黑人一级av| 老司机你懂得福利视频| 中文字幕第三十八页久久| 福利一二三在线视频观看| 国产白袜脚足J棉袜在线观看| 国产精品黄页网站视频| 狠狠躁狠狠爱网站视频| brazzers欧熟精品系列| 夜夜骑夜夜操夜夜奸| 色哟哟国产精品入口| 日韩精品啪啪视频一道免费| 亚洲精品欧美日韩在线播放 | 天天干天天搞天天摸| 精品一区二区三区在线观看| 国产黄色a级三级三级三级 | 天天色天天爱天天爽| 成人伊人精品色xxxx视频| 五月激情婷婷久久综合网| 超级福利视频在线观看| 亚洲欧美福利在线观看| 中字幕人妻熟女人妻a62v网| 在线观看免费视频网| 无套猛戳丰满少妇人妻| 99久久成人日韩欧美精品| 天天日天天天天天天天天天天| 亚洲精品在线资源站| 久久农村老妇乱69系列| 2017亚洲男人天堂| 国产视频在线视频播放| 亚洲无线观看国产高清在线| 欧美精品欧美极品欧美视频| 国产精品sm调教视频| 麻豆精品成人免费视频| 一二三区在线观看视频| 欧美成人小视频在线免费看| 国产亚州色婷婷久久99精品| 天天操夜夜操天天操天天操 | 亚洲在线免费h观看网站| 天天日天天日天天射天天干| 哥哥姐姐综合激情小说| 国产卡一卡二卡三乱码手机| 社区自拍揄拍尻屁你懂的| 国产福利在线视频一区| 亚洲第一黄色在线观看| 首之国产AV医生和护士小芳| 99精品一区二区三区的区| 亚洲视频乱码在线观看| 国产三级片久久久久久久| jiuse91九色视频| 4个黑人操素人视频网站精品91| 粉嫩欧美美人妻小视频| 国产一区av澳门在线观看| 天天日天天干天天爱| 97超碰最新免费在线观看| 视频在线免费观看你懂得| 午夜精品一区二区三区4| 亚洲欧美激情人妻偷拍| 国产欧美日韩第三页| 天天日天天干天天干天天日| 伊人成人综合开心网| 9久在线视频只有精品| 真实国产乱子伦一区二区| 亚洲综合色在线免费观看| 中文字幕一区二区人妻电影冢本 | 国产伊人免费在线播放| av完全免费在线观看av| 亚洲国产在线精品国偷产拍| 中字幕人妻熟女人妻a62v网| 日本乱人一区二区三区| 日韩三级电影华丽的外出| 亚洲成人午夜电影在线观看| 99视频精品全部15| 中文字幕中文字幕人妻| 综合色区亚洲熟妇shxstz| 麻豆精品成人免费视频| 日韩欧美国产一区不卡| 欧美亚洲免费视频观看| 欧美伊人久久大香线蕉综合| 中文字幕人妻被公上司喝醉在线| 福利在线视频网址导航| 青青擦在线视频国产在线| 亚洲精品成人网久久久久久小说| 成人综合亚洲欧美一区| 中文字幕人妻av在线观看| 40道精品招牌菜特色| 国产黄色高清资源在线免费观看| 9国产精品久久久久老师| 欧美精品伦理三区四区| 视频 一区二区在线观看| 免费在线观看污污视频网站| 黑人巨大精品欧美视频| 亚洲粉嫩av一区二区三区| 欧美精品黑人性xxxx| 日韩激情文学在线视频| 蜜桃精品久久久一区二区| 一区二区三区精品日本| 风流唐伯虎电视剧在线观看| 绝色少妇高潮3在线观看| 国产高清在线观看1区2区| 经典av尤物一区二区| 18禁污污污app下载| 2020中文字幕在线播放| 少妇人妻真实精品视频| 久久农村老妇乱69系列| 啊慢点鸡巴太大了啊舒服视频| 最近中文2019年在线看| 92福利视频午夜1000看| 日韩写真福利视频在线观看| 精品一线二线三线日本| 国产在线91观看免费观看| 岛国一区二区三区视频在线| 欧美日韩亚洲国产无线码| 免费一级特黄特色大片在线观看| 老司机午夜精品视频资源| 91亚洲精品干熟女蜜桃频道| 97欧洲一区二区精品免费| 人妻激情图片视频小说| 日韩欧美一级黄片亚洲| 亚洲av无码成人精品区辽| 青青青青青青青青青国产精品视频| 国产实拍勾搭女技师av在线| 亚洲欧美在线视频第一页| 日韩黄色片在线观看网站| 天天操天天弄天天射| 亚洲av自拍偷拍综合| 亚洲激情,偷拍视频| 99精品久久久久久久91蜜桃| 丝袜亚洲另类欧美变态| 中文人妻AV久久人妻水| 在线观看的黄色免费网站| 最后99天全集在线观看| 亚洲成人激情视频免费观看了| 新婚人妻聚会被中出| 久久免费看少妇高潮完整版| 风流唐伯虎电视剧在线观看| av黄色成人在线观看| 中文字幕最新久久久| 97人妻色免费视频| 久久久久久9999久久久久| 经典国语激情内射视频| 国产清纯美女al在线| 欧美老妇精品另类不卡片| 成人福利视频免费在线| 成人激情文学网人妻| 大香蕉伊人国产在线| 最新国产亚洲精品中文在线| 91av精品视频在线| 天堂av在线官网中文| 男人和女人激情视频| 天天操,天天干,天天射| 精品一线二线三线日本| 国产午夜福利av导航| 日本少妇人妻xxxxx18| 国产一区av澳门在线观看| av一区二区三区人妻| 午夜精品九一唐人麻豆嫩草成人| www,久久久,com| 国产日韩精品一二三区久久久| ka0ri在线视频| 天天日天天爽天天爽| 99久久中文字幕一本人| 久久机热/这里只有| 女警官打开双腿沦为性奴| 一级黄色av在线观看| 国产女人露脸高潮对白视频| 最后99天全集在线观看| 亚洲成人免费看电影| 特级欧美插插插插插bbbbb| av乱码一区二区三区| 欧美日韩在线精品一区二区三| 国产精品久久久久久美女校花| aⅴ五十路av熟女中出| 亚洲视频在线视频看视频在线| 伊人综合aⅴ在线网| gay gay男男瑟瑟在线网站| 国产精品污污污久久| 亚洲人妻30pwc| 亚洲一区二区三区uij| 粉嫩欧美美人妻小视频| 狠狠躁狠狠爱网站视频| 天天色天天操天天透| 黑人大几巴狂插日本少妇| 女人精品内射国产99| 亚洲日产av一区二区在线| 99精品久久久久久久91蜜桃| av网址国产在线观看| 亚洲 自拍 色综合图| 九一传媒制片厂视频在线免费观看| 天天躁日日躁狠狠躁躁欧美av| 亚洲av天堂在线播放| 最新中文字幕免费视频| 任你操视频免费在线观看| 国产精品精品精品999| 伊人开心婷婷国产av| 人妻少妇亚洲精品中文字幕| 国产一区二区在线欧美| 欧美精产国品一二三产品区别大吗| 97精品成人一区二区三区| 亚洲伊人av天堂有码在线| 中文字幕一区二区亚洲一区| 黄色成年网站午夜在线观看| 激情伦理欧美日韩中文字幕| huangse网站在线观看| 天天日天天干天天要| 人妻av无码专区久久绿巨人| 久精品人妻一区二区三区| 在线免费观看日本伦理| 伊人情人综合成人久久网小说 | 久久综合老鸭窝色综合久久| 91精品激情五月婷婷在线| 蜜桃色婷婷久久久福利在线| 在线观看免费岛国av| 日本高清成人一区二区三区| 国产精品久久久久久久精品视频| 丰满的子国产在线观看| 欧美伊人久久大香线蕉综合| 免费岛国喷水视频在线观看| 又粗又硬又猛又爽又黄的| 99精品视频之69精品视频 | 精品日产卡一卡二卡国色天香| 一区二区三区毛片国产一区| 日韩中文字幕在线播放第二页| 亚洲 人妻 激情 中文| 视频一区二区三区高清在线| 中文乱理伦片在线观看| 精品亚洲国产中文自在线| 男生舔女生逼逼视频| 亚洲伊人色一综合网| 国产揄拍高清国内精品对白| 91免费观看国产免费| 亚洲自拍偷拍精品网| 亚洲另类综合一区小说| 成人30分钟免费视频| 丝袜长腿第一页在线| 免费看高清av的网站| 东京热男人的av天堂| 91p0rny九色露脸熟女| 欧美性感尤物人妻在线免费看| 国产高清在线观看1区2区| 91九色国产porny蝌蚪| 人妻少妇av在线观看| 2020国产在线不卡视频| av成人在线观看一区| av黄色成人在线观看| 2020久久躁狠狠躁夜夜躁| 男人在床上插女人视频| 国产精品欧美日韩区二区| 99热色原网这里只有精品| 亚洲欧美国产综合777| av老司机精品在线观看| 亚洲av第国产精品| 免费在线观看视频啪啪| 中文字幕,亚洲人妻| 亚洲熟色妇av日韩熟色妇在线| 午夜在线精品偷拍一区二| 日日操综合成人av| 黄色大片免费观看网站| 欧美日韩亚洲国产无线码| 中文字幕第三十八页久久| 国产午夜福利av导航| 最新91九色国产在线观看| 青青青青青青草国产| 97香蕉碰碰人妻国产樱花| 91免费福利网91麻豆国产精品| 小穴多水久久精品免费看| 99国内精品永久免费视频| 色狠狠av线不卡香蕉一区二区 | 欧美视频不卡一区四区| 粉嫩av蜜乳av蜜臀| 亚洲va欧美va人人爽3p| 老司机午夜精品视频资源| 无码日韩人妻精品久久| 社区自拍揄拍尻屁你懂的| 国产va精品免费观看| 天天日天天干天天插舔舔| 亚洲一区自拍高清免费视频| 欧美在线偷拍视频免费看 | 天堂av中文在线最新版| 免费一级特黄特色大片在线观看 | 被大鸡吧操的好舒服视频免费| 中国熟女@视频91| 最新91九色国产在线观看| av在线资源中文字幕| 成人av免费不卡在线观看| 久久丁香婷婷六月天| 少妇露脸深喉口爆吞精| 欧美成人猛片aaaaaaa| 夜夜骑夜夜操夜夜奸| 欧美专区第八页一区在线播放| 性感美女福利视频网站| 亚洲av自拍偷拍综合| 第一福利视频在线观看| 1769国产精品视频免费观看| 91免费观看国产免费| 国产第一美女一区二区三区四区| 亚洲熟女女同志女同| 一区二区三区麻豆福利视频| 精品视频中文字幕在线播放 | 少妇系列一区二区三区视频| 欧美精产国品一二三区| 日本人妻欲求不满中文字幕| 888亚洲欧美国产va在线播放| av在线shipin| 国产欧美精品一区二区高清| 国产黄色片蝌蚪九色91| 欧美日韩亚洲国产无线码| 国产亚洲视频在线二区| 婷婷久久一区二区字幕网址你懂得 | 日本免费午夜视频网站| 成人蜜桃美臀九一一区二区三区| 不卡一不卡二不卡三| 亚洲国产精品黑丝美女| 久久热久久视频在线观看| 涩涩的视频在线观看视频| 日本精品一区二区三区在线视频。 | 国产福利小视频免费观看| 欧美精产国品一二三产品区别大吗| 亚洲伊人色一综合网| 中文字幕av第1页中文字幕| 亚洲成人国产av在线| 五月婷婷在线观看视频免费| 天天干天天操天天玩天天射 | 狠狠地躁夜夜躁日日躁| 青青青国产免费视频| 国产精品成人xxxx| 国产女人露脸高潮对白视频| 99热碰碰热精品a中文| 少妇高潮一区二区三区| 老熟妇xxxhd老熟女| 国产成人精品av网站| 欧美精品久久久久久影院| 国产精品久久久久久美女校花| 欧美男人大鸡吧插女人视频| 欧美一区二区三区四区性视频| 午夜精品福利一区二区三区p | 国产亚洲视频在线观看| 国产日韩一区二区在线看| 精品人妻一二三区久久| 久久久久久9999久久久久| 粉嫩欧美美人妻小视频| 亚洲一区二区三区久久午夜| 成人免费公开视频无毒| 18禁网站一区二区三区四区| 中文字幕 人妻精品| 偷青青国产精品青青在线观看| 热思思国产99re| 日日爽天天干夜夜操| 骚逼被大屌狂草视频免费看| 蝴蝶伊人久久中文娱乐网 | 亚洲精品色在线观看视频| 91精品综合久久久久3d动漫| 一区二区在线观看少妇| av手机在线免费观看日韩av| 日本后入视频在线观看| 午夜成午夜成年片在线观看| 东京干手机福利视频| 欧美特级特黄a大片免费| 一区二区三区精品日本| 无码中文字幕波多野不卡| 日韩熟女系列一区二区三区| 国产精品探花熟女在线观看| 扒开腿挺进肉嫩小18禁视频| 日本丰满熟妇BBXBBXHD| 青青青青青青青在线播放视频| 青青草国内在线视频精选| 偷拍自拍亚洲视频在线观看| 成熟丰满熟妇高潮xx×xx| 成人av亚洲一区二区| 熟妇一区二区三区高清版| 沈阳熟妇28厘米大战黑人| 亚洲欧美激情中文字幕| 亚洲在线免费h观看网站| 亚洲国产在人线放午夜| 一区二区三区日本伦理| 精品91自产拍在线观看一区| 日韩精品啪啪视频一道免费| 色综合久久无码中文字幕波多| 狠狠地躁夜夜躁日日躁| 欧美中文字幕一区最新网址| 78色精品一区二区三区| 久久久久只精品国产三级| 中文字幕 人妻精品| 国产亚洲欧美另类在线观看| 一区二区三区另类在线| 国产精品3p和黑人大战| 3337p日本欧洲大胆色噜噜| 98视频精品在线观看| 国产女人露脸高潮对白视频| 国产av国片精品一区二区| 91精品视频在线观看免费| 韩国三级aaaaa高清视频| 中文字幕成人日韩欧美| 18禁美女无遮挡免费| 熟女国产一区亚洲中文字幕| 黄色中文字幕在线播放| 亚洲午夜电影之麻豆| 国产大学生援交正在播放| 亚洲一级av无码一级久久精品| 岛国毛片视频免费在线观看| 红桃av成人在线观看| 伊人情人综合成人久久网小说 | 1区2区3区不卡视频| 把腿张开让我插进去视频| 人妻久久久精品69系列| 一二三区在线观看视频| 欧美va亚洲va天堂va| 四川乱子伦视频国产vip| 一区二区三区欧美日韩高清播放| 超pen在线观看视频公开97| 久久精品国产23696| 成年人免费看在线视频| 91人妻精品久久久久久久网站| 91自产国产精品视频| 亚洲国产精品久久久久蜜桃| lutube在线成人免费看| gogo国模私拍视频| 干逼又爽又黄又免费的视频| 端庄人妻堕落挣扎沉沦| 国产自拍在线观看成人| 国产日韩精品一二三区久久久| 高清成人av一区三区| 久久久精品999精品日本| 亚洲成人黄色一区二区三区| 88成人免费av网站| 九色视频在线观看免费| 欧美va不卡视频在线观看| 伊人综合免费在线视频| 538精品在线观看视频| 亚洲精品福利网站图片| 亚洲成人激情av在线| 亚洲一区自拍高清免费视频| 成人午夜电影在线观看 久久| 伊人成人综合开心网| 熟女人妻三十路四十路人妻斩| 少妇与子乱在线观看| 亚洲中文字字幕乱码| 大陆精品一区二区三区久久| 久久久久久久久久一区二区三区| 91she九色精品国产| 国产在线拍揄自揄视频网站| 亚洲精品av在线观看| 免费看国产av网站| 中文字幕日韩精品日本| 亚洲av色香蕉一区二区三区 | 无忧传媒在线观看视频| 国产刺激激情美女网站| 日本五十路熟新垣里子| 国产精品视频一区在线播放| 国产又粗又硬又大视频| 亚洲va天堂va国产va久| 激情内射在线免费观看| 99久久久无码国产精品性出奶水| 超碰公开大香蕉97| 欧洲精品第一页欧洲精品亚洲| 天天射夜夜操综合网| 91久久综合男人天堂| 黄片大全在线观看观看| 国产精品福利小视频a| 亚洲无码一区在线影院| 国产视频网站国产视频| 免费福利av在线一区二区三区| 强行扒开双腿猛烈进入免费版| 偷青青国产精品青青在线观看| 国产亚洲视频在线二区| 人妻最新视频在线免费观看| 肏插流水妹子在线乐播下载| 女同性ⅹxx女同h偷拍| 激情小视频国产在线| 粉嫩小穴流水视频在线观看| 天天干天天日天天干天天操| 93精品视频在线观看| 男人在床上插女人视频| 亚洲综合一区成人在线| 国产成人午夜精品福利| 人妻在线精品录音叫床| 亚洲av成人免费网站| 欧美成人小视频在线免费看| 黄色三级网站免费下载| 一区二区视频在线观看免费观看| 五月激情婷婷久久综合网| 青青草视频手机免费在线观看| 国产精彩对白一区二区三区| 精品少妇一二三视频在线| 亚洲成人熟妇一区二区三区 | 亚洲av黄色在线网站| 亚洲一区制服丝袜美腿| 亚洲国产欧美一区二区三区…| 91福利在线视频免费观看| 骚货自慰被发现爆操| av俺也去在线播放| 国产白嫩美女一区二区| 中文字幕在线一区精品| 日日爽天天干夜夜操| 91九色porny国产在线| 久久这里有免费精品| av网站色偷偷婷婷网男人的天堂| 激情国产小视频在线| 99精品国自产在线人| 日本一区精品视频在线观看| 中文字幕中文字幕人妻| av在线资源中文字幕| av破解版在线观看| 岛国一区二区三区视频在线| 一区二区久久成人网| mm131美女午夜爽爽爽| a v欧美一区=区三区| 精品亚洲中文字幕av| 亚洲精品福利网站图片| 日韩a级精品一区二区| 精品视频国产在线观看| 国产精品一区二区三区蜜臀av | av日韩在线免费播放| 天堂女人av一区二区| 岛国免费大片在线观看| 亚洲精品午夜久久久久| 亚洲另类综合一区小说| 黄色无码鸡吧操逼视频| 91国产在线免费播放| 粉嫩欧美美人妻小视频| 青青草原色片网站在线观看| av天堂资源最新版在线看| 天堂av在线播放免费| 日韩一区二区三区三州| 超pen在线观看视频公开97| 亚洲少妇高潮免费观看| 18禁网站一区二区三区四区| 天天日天天干天天搡| 丝袜亚洲另类欧美变态| 国产亚洲欧美另类在线观看| 午夜免费体验区在线观看| 9色在线视频免费观看| 少妇系列一区二区三区视频| 不卡一不卡二不卡三| brazzers欧熟精品系列| 精品一区二区三区欧美| 性感美女福利视频网站| 亚洲国产欧美一区二区三区久久| 9国产精品久久久久老师| 中文字幕,亚洲人妻| 精品久久久久久久久久中文蒉| 亚洲一区av中文字幕在线观看| 女警官打开双腿沦为性奴| 午夜精品福利91av| 国产片免费观看在线观看| 国产白嫩美女一区二区| 国产精品视频欧美一区二区| 岛国av高清在线成人在线| 国产va在线观看精品| 成人免费做爰高潮视频| 中文字幕 亚洲av| 非洲黑人一级特黄片| 一级黄片大鸡巴插入美女| 亚洲免费成人a v| 国产黄色a级三级三级三级| 亚洲1卡2卡三卡4卡在线观看| 欧美黑人巨大性xxxxx猛交| 伊人开心婷婷国产av| 日本午夜爽爽爽爽爽视频在线观看 | 中文字幕日韩91人妻在线| 成人高潮aa毛片免费| 国产一区成人在线观看视频| 国产janese在线播放| brazzers欧熟精品系列| 一色桃子久久精品亚洲| 中字幕人妻熟女人妻a62v网| 国产午夜亚洲精品麻豆| 天天射,天天操,天天说| 人妻无码色噜噜狠狠狠狠色| 婷婷六月天中文字幕| 91 亚洲视频在线观看| 国产品国产三级国产普通话三级| 桃色视频在线观看一区二区 | 岛国黄色大片在线观看| 亚洲中文字幕综合小综合| 国产av欧美精品高潮网站| 成人蜜桃美臀九一一区二区三区| 欧美区一区二区三视频| 粗大的内捧猛烈进出爽大牛汉子 | 免费费一级特黄真人片| 亚洲精品三级av在线免费观看| 欧美一级片免费在线成人观看| 日本熟女50视频免费| 最新国产精品拍在线观看| 青青青青青操视频在线观看| 91中文字幕最新合集| 亚洲熟女综合色一区二区三区四区| 直接能看的国产av| 黑人性生活视频免费看| 亚洲精品三级av在线免费观看| 狠狠操操操操操操操操操| 女人精品内射国产99| 国产丰满熟女成人视频| 欧美精品资源在线观看| 欧美精品亚洲精品日韩在线| 久久热久久视频在线观看| 姐姐的朋友2在线观看中文字幕| 高潮视频在线快速观看国家快速| 中文字幕 人妻精品| 极品粉嫩小泬白浆20p主播| 热99re69精品8在线播放| 亚洲国产40页第21页| 中文字幕在线欧美精品| 亚洲蜜臀av一区二区三区九色| 美女福利视频网址导航| 久久久久久久久久久久久97| 亚洲精品亚洲人成在线导航| 亚洲国产40页第21页| 红杏久久av人妻一区| 亚洲日产av一区二区在线| 欧美中国日韩久久精品| 亚洲 清纯 国产com| 福利国产视频在线观看| 亚洲另类在线免费观看| 精品日产卡一卡二卡国色天香| 大鸡巴后入爆操大屁股美女| 91精品免费久久久久久| 国产精品久久久久久久女人18| 99国内小视频在现欢看| 国产精品自拍视频大全| 精品人妻每日一部精品| 精品高潮呻吟久久av| 国产精品自拍偷拍a| 好男人视频在线免费观看网站| 日韩成人综艺在线播放| 又粗又硬又猛又黄免费30| 香蕉91一区二区三区| 亚洲av色图18p| 亚洲av自拍偷拍综合| aⅴ精产国品一二三产品| 国产日韩精品一二三区久久久| 1000部国产精品成人观看视频 | 香港一级特黄大片在线播放| 亚洲中文字幕校园春色| 国产又色又刺激在线视频| 不卡一区一区三区在线| 免费观看国产综合视频| 久久久久久久亚洲午夜综合福利 | 青青青艹视频在线观看| 亚洲av午夜免费观看| 日韩国产乱码中文字幕| 五十路熟女人妻一区二| 91破解版永久免费| 超污视频在线观看污污污| 天天射夜夜操综合网| 在线观看日韩激情视频| 日韩精品中文字幕福利| 青青青青操在线观看免费| 中文字幕第一页国产在线| 91天堂精品一区二区| 天天日天天干天天搡| 欧美怡红院视频在线观看| 强行扒开双腿猛烈进入免费版| 精品乱子伦一区二区三区免费播| 18禁无翼鸟成人在线| 欧美亚洲少妇福利视频| av欧美网站在线观看| 美女操逼免费短视频下载链接| 做爰视频毛片下载蜜桃视频1| 97成人免费在线观看网站| 男人靠女人的逼视频| 新婚人妻聚会被中出| 免费大片在线观看视频网站| 国产麻豆91在线视频| 中文字幕视频一区二区在线观看| 成人精品在线观看视频| 日韩人妻xxxxx| 亚洲最大黄 嗯色 操 啊| 国产夫妻视频在线观看免费| 日韩精品中文字幕福利| 日本女人一级免费片| 亚洲av一妻不如妾| 99精品视频之69精品视频 | 国产av国片精品一区二区| 欧美特色aaa大片| 国产精品久久久久久久久福交| 亚洲一区二区激情在线| 日韩精品中文字幕播放| 精品少妇一二三视频在线| 亚洲2021av天堂| 精品视频国产在线观看| 国产一区成人在线观看视频| 国产不卡av在线免费| 激情人妻校园春色亚洲欧美| 中文字幕人妻三级在线观看| 国产中文精品在线观看| av老司机亚洲一区二区| 国产伦精品一区二区三区竹菊| 人妻自拍视频中国大陆| 少妇ww搡性bbb91| 农村胖女人操逼视频| 国产性生活中老年人视频网站| 18禁美女无遮挡免费| 亚洲成人三级在线播放 | 欧美成人黄片一区二区三区 | 亚洲av人人澡人人爽人人爱| 男生舔女生逼逼的视频| 黄色视频成年人免费观看| 午夜精品一区二区三区4| 91天堂天天日天天操| 天堂女人av一区二区| 国产成人一区二区三区电影网站| 亚洲午夜伦理视频在线| 精品少妇一二三视频在线| 中文字幕日韩精品日本| 黑人变态深video特大巨大| 国产一区二区神马久久| 午夜免费观看精品视频| 国产又粗又猛又爽又黄的视频在线| 午夜婷婷在线观看视频| 亚洲精品久久视频婷婷| 日日夜夜大香蕉伊人| 亚洲av第国产精品| 青青青视频手机在线观看| 任我爽精品视频在线播放| 最新91九色国产在线观看| 亚洲天堂第一页中文字幕| 青青操免费日综合视频观看| 久青青草视频手机在线免费观看| 天天色天天操天天舔| 91国产在线视频免费观看| 国产熟妇一区二区三区av| 成人高清在线观看视频| xxx日本hd高清| 2022天天干天天操| 亚洲av日韩高清hd| 91精品国产综合久久久蜜 | 最新97国产在线视频| 一区二区三区另类在线 | 精品高跟鞋丝袜一区二区| 欧美区一区二区三视频| 天天夜天天日天天日| 999热精品视频在线| 久草视频在线免播放| 天天操天天干天天插| 91国偷自产一区二区三区精品| 91精品资源免费观看| 制服丝袜在线人妻中文字幕| 欧美地区一二三专区| 1区2区3区4区视频在线观看| ka0ri在线视频| 日本熟女50视频免费| 午夜蜜桃一区二区三区| 夜夜骑夜夜操夜夜奸| 动漫黑丝美女的鸡巴| 国产高清在线观看1区2区| 欧美亚洲牲夜夜综合久久| 欧美亚洲少妇福利视频| 一级A一级a爰片免费免会员| 中文字母永久播放1区2区3区| 大香蕉大香蕉大香蕉大香蕉大香蕉| 中文字母永久播放1区2区3区| 欧美一区二区三区乱码在线播放| 亚洲成人午夜电影在线观看| 精品人人人妻人人玩日产欧| 美女吃鸡巴操逼高潮视频| 国产精彩对白一区二区三区| 亚洲av午夜免费观看| 色综合天天综合网国产成人| 天天插天天狠天天操| 中文字母永久播放1区2区3区| 亚洲免费视频欧洲免费视频| 夜夜骑夜夜操夜夜奸| 91精品高清一区二区三区| 2022中文字幕在线| 岛国av高清在线成人在线| 日韩精品啪啪视频一道免费| 亚洲欧美激情国产综合久久久 | 80电影天堂网官网| 韩国女主播精品视频网站| 天天操天天弄天天射| 国产熟妇乱妇熟色T区| 日本少妇在线视频大香蕉在线观看 | 天天日天天透天天操| 欧美一区二区三区在线资源| 在线可以看的视频你懂的| 91亚洲国产成人精品性色| 中文字幕av一区在线观看| av中文字幕福利网| 国产精品久久久久久久精品视频| 女生被男生插的视频网站| 91精品国产综合久久久蜜| 久久这里只有精品热视频 | 快插进小逼里大鸡吧视频| 夜夜嗨av一区二区三区中文字幕| 亚洲 国产 成人 在线| 日韩av熟妇在线观看| 中文字幕日韩无敌亚洲精品| tube69日本少妇| 一区二区三区精品日本| 白白操白白色在线免费视频| 中文字幕人妻av在线观看| 国产亚洲欧美另类在线观看| 亚洲av无乱一区二区三区性色| jul—619中文字幕在线| 免费在线黄色观看网站| 天天艹天天干天天操| 91精品啪在线免费| 社区自拍揄拍尻屁你懂的| 18禁美女羞羞免费网站| 老司机深夜免费福利视频在线观看| 国产精品女邻居小骚货| 天天日天天操天天摸天天舔| 欧美viboss性丰满| 国产aⅴ一线在线观看| 午夜国产福利在线观看| 午夜久久久久久久99| 亚洲精品国产综合久久久久久久久| 中文字幕在线一区精品| 91久久精品色伊人6882| 特级欧美插插插插插bbbbb| 亚洲天堂有码中文字幕视频| 日韩精品啪啪视频一道免费| 91亚洲国产成人精品性色| 中文字幕高清资源站| 精品91自产拍在线观看一区| av线天堂在线观看| 传媒在线播放国产精品一区| 色吉吉影音天天干天天操| 中文字幕av熟女人妻| 女同久久精品秋霞网| 天天操天天污天天射| 97瑟瑟超碰在线香蕉| 2022精品久久久久久中文字幕| 综合色区亚洲熟妇shxstz| 亚洲精品国产综合久久久久久久久| 欧美精产国品一二三产品价格| 3337p日本欧洲大胆色噜噜| 欧洲黄页网免费观看| 日日爽天天干夜夜操| 超碰在线观看免费在线观看| 激情色图一区二区三区| 亚欧在线视频你懂的| huangse网站在线观看| 99re国产在线精品| 亚洲成人av在线一区二区| 高潮视频在线快速观看国家快速| 中文乱理伦片在线观看| 88成人免费av网站| av一区二区三区人妻| 久久精品国产999| 色爱av一区二区三区| 5528327男人天堂| 国产日韩欧美美利坚蜜臀懂色| 久久久久国产成人精品亚洲午夜| 一区二区视频在线观看免费观看| 久久久精品国产亚洲AV一| 色伦色伦777国产精品| 亚洲最大黄 嗯色 操 啊| 开心 色 六月 婷婷| 班长撕开乳罩揉我胸好爽| 最后99天全集在线观看| 欧美日韩v中文在线| 人人在线视频一区二区| 亚洲成人国产综合一区| 日韩激情文学在线视频| 午夜激情精品福利视频| 欧美日韩亚洲国产无线码| 日韩国产乱码中文字幕| 和邻居少妇愉情中文字幕| 欧美天堂av无线av欧美| 大鸡巴后入爆操大屁股美女| gav成人免费播放| 日本人妻少妇18—xx| 丰满的子国产在线观看| 亚洲一区二区三区精品乱码| 中文字幕一区二区自拍| av中文字幕网址在线| 欧美特级特黄a大片免费| 亚洲一区二区三区偷拍女厕91| 精品区一区二区三区四区人妻| 国产九色91在线视频| 亚洲久久午夜av一区二区| 精品av久久久久久久| 亚洲美女美妇久久字幕组| 视频一区二区三区高清在线| 亚洲成人激情视频免费观看了| 欧美一区二区三区在线资源| 日本最新一二三区不卡在线| 91av精品视频在线| 免费费一级特黄真人片| 久久久久久久一区二区三| 日韩人妻在线视频免费| 精品一区二区三区欧美| 激情伦理欧美日韩中文字幕| 日韩美在线观看视频黄| 888欧美视频在线| 亚洲精品精品国产综合| AV天堂一区二区免费试看| 阴茎插到阴道里面的视频| 2020中文字幕在线播放| 国产精品视频一区在线播放| 麻豆精品成人免费视频| 97人妻无码AV碰碰视频| 午夜在线一区二区免费| 人妻久久久精品69系列| 国产三级精品三级在线不卡| 亚洲av琪琪男人的天堂| 黑人大几巴狂插日本少妇| 亚洲成人线上免费视频观看| 韩国黄色一级二级三级| 在线观看亚洲人成免费网址| 九九视频在线精品播放| 日噜噜噜夜夜噜噜噜天天噜噜噜| 免费男阳茎伸入女阳道视频| 最新欧美一二三视频| 亚洲欧美激情中文字幕| 超碰97免费人妻麻豆| 97精品人妻一区二区三区精品| 成人性爱在线看四区| 成人激情文学网人妻| 免费人成黄页网站在线观看国产| 亚洲女人的天堂av| 男人的天堂av日韩亚洲| 男女啪啪视频免费在线观看| av在线免费观看亚洲天堂| 亚洲熟色妇av日韩熟色妇在线| 一区二区三区美女毛片| 欧美交性又色又爽又黄麻豆| 91福利在线视频免费观看| 蜜臀av久久久久蜜臀av麻豆| 搡老熟女一区二区在线观看 | 97人妻人人澡爽人人精品| 大鸡吧插逼逼视频免费看| 亚洲狠狠婷婷综合久久app| 国产日韩精品一二三区久久久| 国产精品人妻熟女毛片av久| 97色视频在线观看| 天天日天天透天天操| 国产在线免费观看成人| 污污小视频91在线观看| 夫妻在线观看视频91| 国产黄色大片在线免费播放| 欧美一区二区三区乱码在线播放| 亚洲欧美综合另类13p| 日本啪啪啪啪啪啪啪| 青青青青操在线观看免费| 黄色中文字幕在线播放| 久草视频在线免播放| 午夜美女少妇福利视频| 国产亚洲精品欧洲在线观看| 亚洲午夜高清在线观看| 早川濑里奈av黑人番号| 农村胖女人操逼视频| 中文乱理伦片在线观看| 久青青草视频手机在线免费观看| 久久久久久久99精品| 99精品亚洲av无码国产另类| 中文字日产幕乱六区蜜桃| 国产美女午夜福利久久| 国产日本欧美亚洲精品视| 人妻激情图片视频小说| 搡老熟女一区二区在线观看| 激情图片日韩欧美人妻| 亚洲少妇高潮免费观看| 国产欧美精品不卡在线| av中文字幕电影在线看| 国产九色91在线观看精品| 99re国产在线精品| 日本中文字幕一二区视频| 中文字幕一区二区自拍| 成年人午夜黄片视频资源| 日本熟妇喷水xxx| 天天日天天天天天天天天天天| 国产一区二区在线欧美| 国产高清女主播在线| 日韩欧美国产精品91| 青青尤物在线观看视频网站| 久久久久久国产精品| 久久久人妻一区二区| 青青青青在线视频免费观看| 999久久久久999| 99热久久这里只有精品| 啊用力插好舒服视频| 天天通天天透天天插| 偷拍美女一区二区三区| 日韩美女综合中文字幕pp| 亚洲精品在线资源站| 免费观看成年人视频在线观看| 国产亚洲欧美视频网站| 国产日本欧美亚洲精品视| 日本三极片视频网站观看| 国产亚洲欧美45p| 中国熟女一区二区性xx| 青青青青青免费视频| 日噜噜噜夜夜噜噜噜天天噜噜噜| 亚洲精品ww久久久久久| 亚洲专区激情在线观看视频| jiujiure精品视频在线| 亚洲专区激情在线观看视频| 狠狠的往里顶撞h百合| 黄色成年网站午夜在线观看| 黄网十四区丁香社区激情五月天| 久久三久久三久久三久久| 93人妻人人揉人人澡人人| 黄色片年轻人在线观看| 黄色中文字幕在线播放| 日韩美女搞黄视频免费| 色噜噜噜噜18禁止观看| 福利午夜视频在线观看| chinese国产盗摄一区二区| 国产使劲操在线播放| 经典国语激情内射视频| 唐人色亚洲av嫩草| 99婷婷在线观看视频| 天天操天天弄天天射| 亚洲图库另类图片区| 岳太深了紧紧的中文字幕| 欧美日韩一级黄片免费观看| 无忧传媒在线观看视频| 色哟哟在线网站入口| 天天干天天日天天干天天操| 丝袜美腿视频诱惑亚洲无| 亚洲2021av天堂| 日本午夜久久女同精女女| 精品欧美一区二区vr在线观看 | 亚洲国产精品久久久久蜜桃| 美女小视频网站在线| 91精品啪在线免费| 欧美亚洲自偷自拍 在线| 日本免费一级黄色录像| 啪啪啪啪啪啪啪啪啪啪黄色| 中文字幕免费在线免费| 亚洲精品中文字幕下载| 亚洲人一区二区中文字幕| 久久久精品999精品日本| 老司机99精品视频在线观看| 国产内射中出在线观看| 色偷偷伊人大杳蕉综合网| 91亚洲精品干熟女蜜桃频道 | 最近中文2019年在线看| 天堂av狠狠操蜜桃| 亚洲成高清a人片在线观看| 亚洲视频乱码在线观看| 久久这里只有精品热视频| 国产乱子伦一二三区| 91she九色精品国产| 国产成人精品一区在线观看| 午夜福利人人妻人人澡人人爽| 午夜成午夜成年片在线观看| 日本女大学生的黄色小视频| 巨乳人妻日下部加奈被邻居中出| 中文字幕1卡1区2区3区| 亚洲欧美成人综合视频| gav成人免费播放| 亚洲国产美女一区二区三区软件| 非洲黑人一级特黄片| 国产一区二区神马久久| 精品高潮呻吟久久av| 日韩不卡中文在线视频网站| yellow在线播放av啊啊啊 | 中文字幕在线第一页成人 | 狠狠嗨日韩综合久久| 日本啪啪啪啪啪啪啪| 日本女大学生的黄色小视频| 亚洲人人妻一区二区三区| 999久久久久999| 新婚人妻聚会被中出| 女人精品内射国产99| 亚洲精品国品乱码久久久久 | 三上悠亚和黑人665番号| 国产精品久久久久久久精品视频| 欧洲国产成人精品91铁牛tv| 大胆亚洲av日韩av| 免费在线看的黄片视频| 女生自摸在线观看一区二区三区 | 经典亚洲伊人第一页| 鸡巴操逼一级黄色气| 欧美成人综合视频一区二区| 特一级特级黄色网片| 91免费观看国产免费| 国产麻豆国语对白露脸剧情| 国产麻豆国语对白露脸剧情| 亚洲精品色在线观看视频| 精品国产高潮中文字幕| 国产91精品拍在线观看| 欧美乱妇无乱码一区二区| 中文字幕av男人天堂| 成人综合亚洲欧美一区| 97色视频在线观看| 熟女少妇激情五十路| 亚洲欧美福利在线观看| 国产无遮挡裸体免费直播视频| av新中文天堂在线网址| 欧美少妇性一区二区三区| 老熟妇xxxhd老熟女| 国产福利小视频二区| 国产综合视频在线看片| heyzo蜜桃熟女人妻| 成人福利视频免费在线| 天天干天天日天天干天天操| 五月天久久激情视频| 日韩一区二区三区三州| 国产黄网站在线观看播放| 在线免费观看国产精品黄色| 欧美日韩一区二区电影在线观看| 免费观看污视频网站| 99热久久这里只有精品8| 无套猛戳丰满少妇人妻| nagger可以指黑人吗| 18禁网站一区二区三区四区| 国产日韩av一区二区在线| 国产之丝袜脚在线一区二区三区| 国产成人小视频在线观看无遮挡| 日韩少妇人妻精品无码专区| 国产亚洲天堂天天一区| 欧美精产国品一二三产品价格| 人妻熟女中文字幕aⅴ在线| 美女福利写真在线观看视频| 久久热久久视频在线观看| 无码中文字幕波多野不卡| 亚洲熟女女同志女同| 亚洲av色香蕉一区二区三区| 伊拉克及约旦宣布关闭领空| 天天干天天日天天干天天操| 亚洲人妻av毛片在线| 成人亚洲精品国产精品| 亚洲高清视频在线不卡| www日韩毛片av| 91精品一区二区三区站长推荐| 日本三极片中文字幕| 人人妻人人澡欧美91精品| 国产精品黄页网站视频| 国产亚洲四十路五十路| av中文字幕福利网| 亚洲 色图 偷拍 欧美| 亚洲免费在线视频网站| 精品乱子伦一区二区三区免费播| 男人靠女人的逼视频| 亚洲人一区二区中文字幕| 人妻最新视频在线免费观看| 人人爽亚洲av人人爽av| 国产高清女主播在线| 做爰视频毛片下载蜜桃视频1| 在线观看的a站 最新| 亚洲精品欧美日韩在线播放| 日韩欧美国产精品91| 97人人妻人人澡人人爽人人精品 | 欧美一区二区三区啪啪同性| 青青青青草手机在线视频免费看| 中文字幕免费福利视频6| 成人sm视频在线观看| 亚洲福利精品福利精品福利| 精品国产污污免费网站入口自| 日韩一区二区三区三州| 18禁网站一区二区三区四区| 91久久综合男人天堂| 亚洲日本一区二区三区| 欧美一区二区三区在线资源| 亚洲日本一区二区三区| 日韩美av高清在线| av视网站在线观看| 天天日天天透天天操| 人妻熟女中文字幕aⅴ在线| 免费观看国产综合视频| 精品日产卡一卡二卡国色天香| 不戴胸罩引我诱的隔壁的人妻| 日本高清成人一区二区三区| 18禁美女黄网站色大片下载| av在线免费观看亚洲天堂| 青青草成人福利电影| 99精品视频之69精品视频| 馒头大胆亚洲一区二区| 97精品成人一区二区三区| 3D动漫精品啪啪一区二区下载| 福利在线视频网址导航| 男人的天堂一区二区在线观看| 久草电影免费在线观看| 黄色三级网站免费下载| 亚洲中文字幕乱码区| 日本午夜久久女同精女女| 全国亚洲男人的天堂| 狠狠的往里顶撞h百合| 国产精品精品精品999| 国产精品一区二区三区蜜臀av | 一区二区三区蜜臀在线| 一区二区三区的久久的蜜桃的视频 | 国产九色91在线视频| 天天做天天爽夜夜做少妇| 欧美伊人久久大香线蕉综合| 午夜精品一区二区三区城中村| 大香蕉伊人中文字幕| 又粗又长 明星操逼小视频| 亚洲va欧美va人人爽3p| 亚洲欧美一卡二卡三卡| 伊人开心婷婷国产av| 五十路熟女人妻一区二区9933| 蜜桃视频入口久久久| 中文字幕av熟女人妻| 香蕉片在线观看av| 人妻素人精油按摩中出| 欧美视频一区免费在线| 黄工厂精品视频在线观看| 在线亚洲天堂色播av电影| 日本免费午夜视频网站| 巨乳人妻日下部加奈被邻居中出| 亚洲激情唯美亚洲激情图片| 亚洲国产中文字幕啊啊啊不行了| 97人妻夜夜爽二区欧美极品| 国产成人自拍视频在线免费观看| 一个色综合男人天堂| 不卡日韩av在线观看| 手机看片福利盒子日韩在线播放 | 99精品视频在线观看免费播放| 男人和女人激情视频| 青青擦在线视频国产在线| mm131美女午夜爽爽爽| 91片黄在线观看喷潮| 天天摸天天亲天天舔天天操天天爽| 久久午夜夜伦痒痒想咳嗽P| 国内资源最丰富的网站| 亚洲视频在线观看高清| 精品国产乱码一区二区三区乱| 中文字幕在线欧美精品| 亚洲天堂精品久久久| 亚洲av无乱一区二区三区性色| 日本男女操逼视频免费看| 亚洲伊人久久精品影院一美女洗澡| 国产亚洲精品品视频在线| 嫩草aⅴ一区二区三区| 国产午夜福利av导航| avjpm亚洲伊人久久| 免费观看国产综合视频| 中国熟女一区二区性xx| 护士特殊服务久久久久久久| 视频一区 二区 三区 综合| 日韩国产乱码中文字幕| 51国产偷自视频在线播放 | AV天堂一区二区免费试看| lutube在线成人免费看| 天天操天天干天天插| 男人的网址你懂的亚洲欧洲av| 日韩亚洲高清在线观看| 天天色天天操天天舔| 欧美一区二区三区乱码在线播放| 日韩美av高清在线| 天天干夜夜操啊啊啊| 涩爱综合久久五月蜜臀| 在线观看操大逼视频| 亚洲 中文 自拍 无码| 伊人情人综合成人久久网小说| 99精品亚洲av无码国产另类| 国产欧美日韩在线观看不卡| 99精品国产免费久久| 欧美日韩情色在线观看| 日本五十路熟新垣里子| 国产内射中出在线观看| 18禁污污污app下载| av完全免费在线观看av| 2022中文字幕在线| 五十路息与子猛烈交尾视频| 成人在线欧美日韩国产| 日韩美在线观看视频黄| 欧美中国日韩久久精品| 国产精品精品精品999| 一区二区三区欧美日韩高清播放| 日韩北条麻妃一区在线| av大全在线播放免费| 欧美在线精品一区二区三区视频 | 日韩在线中文字幕色| 国产精品人久久久久久| 国产精品熟女久久久久浪潮| 欧美 亚洲 另类综合| 97人人模人人爽人人喊| 自拍偷拍,中文字幕| 黄色片黄色片wyaa| av天堂中文免费在线| 老司机深夜免费福利视频在线观看 | 人妻丝袜榨强中文字幕| 国产视频在线视频播放| 一区二区在线观看少妇| 人妻丝袜诱惑我操她视频| 亚洲av自拍天堂网| 一区二区三区久久中文字幕| 成年人黄色片免费网站| 伊人网中文字幕在线视频| 国产视频网站国产视频| 亚洲女人的天堂av| 美女福利视频网址导航| 精品成人啪啪18免费蜜臀| 青青草成人福利电影| 中文字幕第一页国产在线| 美女张开两腿让男人桶av| 特大黑人巨大xxxx| 久久这里有免费精品| 中文字幕1卡1区2区3区| 欧美天堂av无线av欧美| 无套猛戳丰满少妇人妻| 成人激情文学网人妻 | 男女之间激情网午夜在线| 男大肉棒猛烈插女免费视频| 噜噜色噜噜噜久色超碰| 日韩精品中文字幕福利| 91国内精品久久久久精品一| 欧美精品亚洲精品日韩在线| 99久久中文字幕一本人| 制服丝袜在线人妻中文字幕| 果冻传媒av一区二区三区| 中国熟女@视频91| 日韩精品激情在线观看| 这里只有精品双飞在线播放| 福利片区一区二体验区| 最近的中文字幕在线mv视频| 色花堂在线av中文字幕九九| 一区二区三区美女毛片| 97人妻夜夜爽二区欧美极品| 日本一道二三区视频久久| 深田咏美亚洲一区二区| 中文字幕视频一区二区在线观看| 91麻豆精品久久久久| 国产精品国色综合久久| 久久一区二区三区人妻欧美| 最新97国产在线视频| 亚欧在线视频你懂的| 97精品人妻一区二区三区精品| 黄色成人在线中文字幕| 亚洲天堂精品久久久| 欧美精品欧美极品欧美视频| 成人精品视频99第一页| 亚洲精品高清自拍av| 中文字幕日韩人妻在线三区| 美女在线观看日本亚洲一区| 小穴多水久久精品免费看| 国内精品在线播放第一页| 和邻居少妇愉情中文字幕| 国产成人精品亚洲男人的天堂| 天堂av在线官网中文| 黄色片年轻人在线观看| 免费av岛国天堂网站| 自拍偷拍,中文字幕| 91精品国产麻豆国产| 在线视频免费观看网| 强行扒开双腿猛烈进入免费版| 大鸡巴后入爆操大屁股美女| 韩国女主播精品视频网站| 国产日本精品久久久久久久| 热思思国产99re| 精品国产乱码一区二区三区乱| 亚洲av日韩av第一区二区三区| 精品美女久久久久久| 偷拍自拍福利视频在线观看| 91快播视频在线观看| 日韩美女福利视频网| 超黄超污网站在线观看| 午夜久久久久久久99| 无码中文字幕波多野不卡| 日本韩国在线观看一区二区| av俺也去在线播放| 99久久激情婷婷综合五月天| 91麻豆精品久久久久| 中文字幕av一区在线观看| 自拍偷拍日韩欧美一区二区| 男人天堂色男人av| 天天干天天啪天天舔| 一区二区三区四区视频在线播放| 肏插流水妹子在线乐播下载| 亚洲av人人澡人人爽人人爱| 国产精品系列在线观看一区二区| 亚洲国际青青操综合网站| 少妇人妻久久久久视频黄片| 国产一区二区久久久裸臀| 国产精选一区在线播放| 成年人免费看在线视频| 超碰公开大香蕉97| 九九热99视频在线观看97| 亚洲成人激情av在线| 国产精品久久久久久久女人18| 免费观看污视频网站| 2022中文字幕在线| 日本精品美女在线观看| 亚洲精品高清自拍av | 亚洲高清自偷揄拍自拍| 欧美黄片精彩在线免费观看| 亚洲av日韩av网站| 日本免费一级黄色录像| 日本最新一二三区不卡在线| 国产精品三级三级三级| 啊用力插好舒服视频| 大香蕉日本伊人中文在线| 97国产精品97久久| 日本精品美女在线观看| 欧洲精品第一页欧洲精品亚洲| 五月天久久激情视频| 最新91九色国产在线观看| 9国产精品久久久久老师| 亚洲熟妇无码一区二区三区| 欧美日韩情色在线观看| 亚洲日产av一区二区在线| 大胸性感美女羞爽操逼毛片| 中文字幕1卡1区2区3区| 亚洲va国产va欧美精品88| 伊人开心婷婷国产av| 日韩一区二区电国产精品| 综合精品久久久久97|