国产无遮挡裸体免费直播视频,久久精品国产蜜臀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

最新評論

国产日韩av一区二区在线| 日本成人一区二区不卡免费在线| 不卡精品视频在线观看| 国产福利小视频免费观看| 欧美一级色视频美日韩| 中文字幕av熟女人妻| 色哟哟在线网站入口| 不戴胸罩引我诱的隔壁的人妻| 国产成人精品福利短视频| 91色九色porny| 丝袜长腿第一页在线| 成人激情文学网人妻| 亚洲国际青青操综合网站| 免费成人av中文字幕| 久久久超爽一二三av| 东京热男人的av天堂| 成人在线欧美日韩国产| 成年女人免费播放视频| 青青青青青操视频在线观看| aaa久久久久久久久| 中文字幕日韩精品日本| 亚洲va国产va欧美精品88| 人人爽亚洲av人人爽av| 大鸡吧插入女阴道黄色片| 黄色三级网站免费下载| 成人av免费不卡在线观看| 可以在线观看的av中文字幕| 欧美精品中文字幕久久二区| 超碰97人人澡人人| 欧美精品激情在线最新观看视频| 欧美日韩情色在线观看| 91片黄在线观看喷潮| 爱有来生高清在线中文字幕| 国产精品国产三级国产午| 亚洲1区2区3区精华液| 99精品国自产在线人| 四虎永久在线精品免费区二区| 香蕉片在线观看av| 91在线免费观看成人| 这里有精品成人国产99| 亚洲偷自拍高清视频| 亚洲自拍偷拍精品网| 午夜在线观看岛国av,com| 免费观看污视频网站| 玩弄人妻熟妇性色av少妇| 亚洲在线一区二区欧美| 中文字幕在线观看国产片| 亚洲欧美精品综合图片小说| 国产精品自偷自拍啪啪啪| 插小穴高清无码中文字幕| 亚洲图库另类图片区| 欧美亚洲一二三区蜜臀| 日日爽天天干夜夜操| 99亚洲美女一区二区三区| 色婷婷久久久久swag精品| 人妻熟女在线一区二区| 无码国产精品一区二区高潮久久4 日韩欧美一级精品在线观看 | 视频一区 二区 三区 综合| 成人av中文字幕一区| 在线免费观看欧美小视频| 精品美女福利在线观看| 超级av免费观看一区二区三区| 大鸡巴插入美女黑黑的阴毛| 日日夜夜大香蕉伊人| 亚洲国产精品黑丝美女| 自拍偷拍亚洲欧美在线视频| 后入美女人妻高清在线| 国产乱子伦一二三区| 亚洲激情,偷拍视频| 人妻另类专区欧美制服| 日本丰满熟妇BBXBBXHD| 亚洲av琪琪男人的天堂| 久久永久免费精品人妻专区| 欧美亚洲免费视频观看| 五月精品丁香久久久久福利社| 日本成人不卡一区二区| 国产内射中出在线观看| 精品久久久久久高潮| 青青热久免费精品视频在线观看| 在线免费观看99视频| 久久丁香花五月天色婷婷| 亚洲欧美国产麻豆综合| 中字幕人妻熟女人妻a62v网 | 影音先锋女人av噜噜色| japanese五十路熟女熟妇| 成年美女黄网站18禁久久| 97年大学生大白天操逼| 国产视频网站一区二区三区| 国产成人综合一区2区| 亚洲熟女久久久36d| 婷婷五月亚洲综合在线| 美女少妇亚洲精选av| 2020久久躁狠狠躁夜夜躁| 一区二区麻豆传媒黄片| 亚洲 中文 自拍 另类 欧美| 超黄超污网站在线观看| 久久热久久视频在线观看| 97精品成人一区二区三区 | 人妻熟女中文字幕aⅴ在线| 欧美老鸡巴日小嫩逼| 99精品久久久久久久91蜜桃| 国产成人精品亚洲男人的天堂| 91大神福利视频网| 99热这里只有精品中文| 欧洲国产成人精品91铁牛tv| 99久久激情婷婷综合五月天| 亚洲av香蕉一区区二区三区犇| av大全在线播放免费| 国产一级精品综合av| 亚洲精品国偷自产在线观看蜜桃| 天天日天天天天天天天天天天 | 含骚鸡巴玩逼逼视频| 亚洲av日韩精品久久久| 天天操天天干天天插| 欧美aa一级一区三区四区| 成人av电影免费版| 亚洲精品久久视频婷婷| 国产精品国色综合久久| 亚洲综合在线观看免费| 成年美女黄网站18禁久久| 国产精品人妻66p| 国内自拍第一页在线观看| 都市激情校园春色狠狠| 日辽宁老肥女在线观看视频| 亚洲高清免费在线观看视频| 亚洲综合一区成人在线| 精品高跟鞋丝袜一区二区| 少妇人妻久久久久视频黄片| 老有所依在线观看完整版| 黑人3p华裔熟女普通话| 一区二区三区美女毛片| 国产成人自拍视频在线免费观看| 国产精品久久久久久久精品视频| 国产精品午夜国产小视频| 成年人黄色片免费网站| 老司机免费视频网站在线看| 国产精品久久久久久久久福交| 亚洲av午夜免费观看| 91成人精品亚洲国产| www骚国产精品视频| 亚洲1069综合男同| 久久热久久视频在线观看| 日韩人妻丝袜中文字幕| 乱亲女秽乱长久久久| 日本成人一区二区不卡免费在线| 黑人乱偷人妻中文字幕| 一级黄片久久久久久久久| 欧美成人综合色在线噜噜| 亚洲熟妇x久久av久久| 美日韩在线视频免费看| 天美传媒mv视频在线观看| 晚上一个人看操B片| 欧美伊人久久大香线蕉综合| 亚洲熟色妇av日韩熟色妇在线| 欧美成人黄片一区二区三区 | 北条麻妃高跟丝袜啪啪| tube69日本少妇| 香港三日本三韩国三欧美三级| 成人蜜桃美臀九一一区二区三区| 18禁网站一区二区三区四区| 天天摸天天亲天天舔天天操天天爽| 天天操天天操天天碰| 伊人网中文字幕在线视频| 天天日天天干天天舔天天射| 亚洲欧美自拍另类图片| 日本阿v视频在线免费观看| 1区2区3区4区视频在线观看| 欧美一区二区三区乱码在线播放| 日本特级片中文字幕| 人妻3p真实偷拍一二区| 美女张开两腿让男人桶av| 91极品新人『兔兔』精品新作| 夜色撩人久久7777| 狠狠的往里顶撞h百合| 91试看福利一分钟| 成年人黄色片免费网站| 年轻的人妻被夫上司侵犯| 秋霞午夜av福利经典影视| 天天做天天干天天操天天射| 国产精品探花熟女在线观看| 国产卡一卡二卡三乱码手机| 中文亚洲欧美日韩无线码| 国产黑丝高跟鞋视频在线播放| 中文字幕网站你懂的| 国产精品国产三级国产午| 青娱乐在线免费视频盛宴| 888亚洲欧美国产va在线播放| 欧亚日韩一区二区三区观看视频| 91精品资源免费观看| 中文字幕一区二 区二三区四区| 亚洲av午夜免费观看| 午夜在线一区二区免费| 日韩北条麻妃一区在线| 日本人竟这样玩学生妹| 天天夜天天日天天日| 久久三久久三久久三久久| 一区二区三区精品日本| 久久热这里这里只有精品| 性色av一区二区三区久久久| 久草视频在线免播放| 亚洲av自拍偷拍综合| 91老熟女连续高潮对白| 在线可以看的视频你懂的| 搡老熟女一区二区在线观看| www久久久久久久久久久| yy96视频在线观看| 只有精品亚洲视频在线观看| 老司机深夜免费福利视频在线观看| 神马午夜在线观看视频| 91国产在线免费播放| eeuss鲁片一区二区三区| 黄色三级网站免费下载| 日本裸体熟妇区二区欧美| 伊人成人综合开心网| 肏插流水妹子在线乐播下载| 国产日韩欧美视频在线导航| 人人妻人人澡欧美91精品| jul—619中文字幕在线| 高潮视频在线快速观看国家快速| 国产熟妇人妻ⅹxxxx麻豆| 亚洲精品av在线观看| 国产又粗又猛又爽又黄的视频在线| 婷婷五月亚洲综合在线| 91精品啪在线免费| 免费看国产av网站| 欧美一区二区三区激情啪啪啪| av中文在线天堂精品| 国产97在线视频观看| 在线免费观看欧美小视频| 中文字幕av第1页中文字幕| 老司机欧美视频在线看| 开心 色 六月 婷婷| 成人高清在线观看视频| 成年人的在线免费视频| 中文字幕高清免费在线人妻| 93视频一区二区三区| 亚洲精品中文字幕下载| 亚洲的电影一区二区三区| 中国黄色av一级片| 40道精品招牌菜特色| 亚洲欧洲一区二区在线观看| 国产精品自拍在线视频| 久久机热/这里只有| 日韩美av高清在线| 51国产成人精品视频| 成年午夜免费无码区| 自拍偷拍日韩欧美一区二区| 天堂av在线播放免费| 唐人色亚洲av嫩草| 无套猛戳丰满少妇人妻| 熟妇一区二区三区高清版| 欧美黄片精彩在线免费观看| 欧美精产国品一二三产品区别大吗| 极品性荡少妇一区二区色欲| 国产福利在线视频一区| 看一级特黄a大片日本片黑人| 无码日韩人妻精品久久| 一区二区在线视频中文字幕| 国产精彩对白一区二区三区 | 中文字幕日韩人妻在线三区| 中文字幕在线观看国产片| 色呦呦视频在线观看视频| 久久精品国产亚洲精品166m| 亚洲国产美女一区二区三区软件| 成人H精品动漫在线无码播放| 一区二区视频在线观看免费观看| 亚洲天堂av最新网址| 在线观看欧美黄片一区二区三区| 中国老熟女偷拍第一页| 日本韩国亚洲综合日韩欧美国产| 日韩美女搞黄视频免费| 少妇高潮无套内谢麻豆| 午夜毛片不卡免费观看视频| 国产精品污污污久久| 久久久精品欧洲亚洲av| 国产精品成人xxxx| 91极品大一女神正在播放| 国产福利小视频二区| 又黄又刺激的午夜小视频| 黄色大片免费观看网站| 天堂女人av一区二区| 国产精品久久久久久久精品视频| 又粗又硬又猛又黄免费30| 天天日天天舔天天射进去| 少妇高潮无套内谢麻豆| 最近中文字幕国产在线| 不卡日韩av在线观看| 熟女国产一区亚洲中文字幕| 午夜婷婷在线观看视频| 人人妻人人爱人人草| 9色在线视频免费观看| 真实国模和老外性视频| 黄色大片免费观看网站| 一区二区在线观看少妇| 91精品免费久久久久久| 成人高潮aa毛片免费| 亚洲精品欧美日韩在线播放| 大尺度激情四射网站| 2017亚洲男人天堂| 国产麻豆91在线视频| 久久精品国产亚洲精品166m| 天天通天天透天天插| 99的爱精品免费视频| 五十路熟女人妻一区二区9933 | 日韩美女搞黄视频免费| 国产亚洲精品视频合集| 538精品在线观看视频| 国产真实灌醉下药美女av福利| 欧洲亚洲欧美日韩综合| 偷青青国产精品青青在线观看| 亚洲中文字幕国产日韩| 2021天天色天天干| 4个黑人操素人视频网站精品91| 亚洲天堂第一页中文字幕| 日本少妇在线视频大香蕉在线观看| 亚洲偷自拍高清视频| 亚洲男人让女人爽的视频| 日比视频老公慢点好舒服啊| 搡老熟女一区二区在线观看| 97精品人妻一区二区三区精品| 99热99re在线播放| 精品久久婷婷免费视频| 99亚洲美女一区二区三区| 超黄超污网站在线观看| 日韩人妻xxxxx| 天天干天天爱天天色| 国产午夜亚洲精品麻豆| 亚洲1069综合男同| 久久精品在线观看一区二区| 欧美成人综合视频一区二区| 午夜国产免费福利av| 丰满的子国产在线观看| 黄色黄色黄片78在线| 亚洲综合一区二区精品久久| 57pao国产一区二区| 美日韩在线视频免费看| 欧美专区日韩专区国产专区| okirakuhuhu在线观看| japanese日本熟妇另类| 直接能看的国产av| 操人妻嗷嗷叫视频一区二区| 97精品综合久久在线| 岛国黄色大片在线观看| 特黄老太婆aa毛毛片| 欧美在线一二三视频| 中国视频一区二区三区| 国产精品久久久久久久女人18| 伊人综合免费在线视频| 亚洲乱码中文字幕在线| 亚洲av午夜免费观看| 在线免费观看欧美小视频| 懂色av之国产精品| 婷婷六月天中文字幕| 中文字幕,亚洲人妻| 自拍偷拍 国产资源| 成人蜜桃美臀九一一区二区三区| 五十路人妻熟女av一区二区| 一区二区三区蜜臀在线| 91啪国自产中文字幕在线| 亚洲国产精品美女在线观看| 19一区二区三区在线播放| 密臀av一区在线观看| 中文字幕人妻三级在线观看| 国产麻豆剧传媒精品国产av蜜桃| 成年美女黄网站18禁久久| 九九热99视频在线观看97| 亚洲国产精品免费在线观看| 亚洲精品中文字幕下载| 国产女人叫床高潮大片视频| 久久久精品999精品日本| 国产清纯美女al在线| 午夜激情久久不卡一区二区| 99热色原网这里只有精品| 亚洲精品av在线观看| 亚洲精品一区二区三区老狼| 亚洲精品精品国产综合| 在线国产精品一区二区三区| 国产美女精品福利在线| 日韩精品中文字幕福利| 在线观看操大逼视频| 亚洲欧美综合另类13p| 欧美va亚洲va天堂va| 成人区人妻精品一区二视频| 888欧美视频在线| 视频久久久久久久人妻| 视频在线免费观看你懂得| av黄色成人在线观看| 免费无码人妻日韩精品一区二区| 亚洲高清国产自产av| 97人妻无码AV碰碰视频| 日本美女成人在线视频| 婷婷久久一区二区字幕网址你懂得 | 亚洲欧美精品综合图片小说| 成人24小时免费视频| 黑人3p华裔熟女普通话| 亚洲中文字幕人妻一区| 伊人综合免费在线视频| av无限看熟女人妻另类av| 九色porny九色9l自拍视频| 日韩一个色综合导航| 亚洲成人三级在线播放 | 自拍偷拍,中文字幕| 早川濑里奈av黑人番号| 亚洲狠狠婷婷综合久久app | 日本一道二三区视频久久| 免费一级黄色av网站| 99热久久这里只有精品| 日韩精品中文字幕播放| 日韩剧情片电影在线收看| 黑人解禁人妻叶爱071| 91在线视频在线精品3| 国产va在线观看精品| 欧美精品亚洲精品日韩在线| 免费手机黄页网址大全| 老司机午夜精品视频资源| 日韩中文字幕精品淫| 欧美日本aⅴ免费视频| 黄色大片男人操女人逼| 国产成人无码精品久久久电影| jul—619中文字幕在线| 日韩欧美制服诱惑一区在线| 亚洲国产成人最新资源| 蜜臀av久久久久久久| 亚洲精品在线资源站| 青青在线视频性感少妇和隔壁黑丝 | 国产成人精品一区在线观看| 欧美少妇性一区二区三区| 一区二区熟女人妻视频| 2025年人妻中文字幕乱码在线| 免费观看成年人视频在线观看| 美洲精品一二三产区区别| 亚洲最大黄了色网站| 91麻豆精品传媒国产黄色片| 一区二区三区毛片国产一区| 老司机深夜免费福利视频在线观看| 视频一区二区三区高清在线| 粉嫩小穴流水视频在线观看| 亚洲激情偷拍一区二区| 伊人日日日草夜夜草| 男人操女人逼逼视频网站| 只有精品亚洲视频在线观看| 天天做天天干天天操天天射| av中文字幕在线观看第三页| 自拍偷区二区三区麻豆| 国产黄色a级三级三级三级 | 色秀欧美视频第一页| 中字幕人妻熟女人妻a62v网| 懂色av蜜桃a v| 最新的中文字幕 亚洲| 亚洲丝袜老师诱惑在线观看| 中文字幕综合一区二区| 午夜国产免费福利av| 国产精品免费不卡av| 日本一区美女福利视频| 熟女91pooyn熟女| av男人天堂狠狠干| 2021年国产精品自拍| 嫩草aⅴ一区二区三区| 夫妻在线观看视频91| 精品老妇女久久9g国产| 一区二区三区的久久的蜜桃的视频| 中文字幕在线乱码一区二区| 欧美精品一区二区三区xxxx| 青青青青视频在线播放| 久久美欧人妻少妇一区二区三区 | 老鸭窝在线观看一区| 韩国女主播精品视频网站| 区一区二区三国产中文字幕| 久久久久久国产精品| 2022中文字幕在线| 国产实拍勾搭女技师av在线| 午夜精品福利一区二区三区p | av欧美网站在线观看| 黄色的网站在线免费看| 第一福利视频在线观看| 国产麻豆国语对白露脸剧情| 日韩少妇人妻精品无码专区| 国产va精品免费观看| 在线观看免费av网址大全| 又粗又长 明星操逼小视频 | 99热久久极品热亚洲| 老司机免费视频网站在线看| 欧美激情电影免费在线| 日本一区精品视频在线观看| 98视频精品在线观看| 白白操白白色在线免费视频| 久久久久久久精品老熟妇| 黄片大全在线观看观看| 欧美日韩高清午夜蜜桃大香蕉| 天堂va蜜桃一区入口| 亚洲一区二区三区久久午夜| 亚洲综合乱码一区二区| 日本一道二三区视频久久| 欧美性受xx黑人性猛交| 在线免费观看日本片| 欧美在线偷拍视频免费看| 欧美视频综合第一页| 夜夜嗨av一区二区三区中文字幕| 青青青青草手机在线视频免费看| 亚洲欧美成人综合在线观看| 快插进小逼里大鸡吧视频| 美女骚逼日出水来了| 国产三级影院在线观看| 热久久只有这里有精品| 亚洲熟妇久久无码精品| sw137 中文字幕 在线| 亚洲日产av一区二区在线 | 成人av天堂丝袜在线观看| 91色九色porny| 最新黄色av网站在线观看| 97香蕉碰碰人妻国产樱花| 国产一区二区三免费视频| 中文字幕在线观看国产片| 水蜜桃国产一区二区三区| 国产一区二区火爆视频| 国产成人午夜精品福利| 亚洲va国产va欧美精品88| 亚洲一区二区三区久久午夜| 插小穴高清无码中文字幕 | 久久精品36亚洲精品束缚| 中文字幕av男人天堂| 女人精品内射国产99| 中文字幕一区二区三区蜜月| 国产a级毛久久久久精品| 国产视频一区在线观看| 日本欧美视频在线观看三区| 91精品国产综合久久久蜜 | 92福利视频午夜1000看| 人人妻人人爽人人澡人人精品| 免费高清自慰一区二区三区网站| 中文字幕在线乱码一区二区| 美味人妻2在线播放| 国产97视频在线精品| 中国无遮挡白丝袜二区精品 | 青春草视频在线免费播放| 91精品综合久久久久3d动漫| 久久机热/这里只有| 亚洲最大黄 嗯色 操 啊| 在线播放一区二区三区Av无码| 亚洲激情唯美亚洲激情图片| 日日夜夜大香蕉伊人| 免费十精品十国产网站| 亚洲美女自偷自拍11页| 天天综合天天综合天天网| 男人靠女人的逼视频| 亚洲av黄色在线网站| 亚洲一区二区三区精品乱码| 韩国爱爱视频中文字幕| 2022精品久久久久久中文字幕| 中文字幕一区二区人妻电影冢本| 天天做天天干天天操天天射| 亚洲激情偷拍一区二区| 性欧美激情久久久久久久| 91超碰青青中文字幕| 人妻丝袜诱惑我操她视频| av资源中文字幕在线观看| av资源中文字幕在线观看| 北条麻妃高跟丝袜啪啪| 国产熟妇一区二区三区av| 97成人免费在线观看网站| 天堂中文字幕翔田av| 又黄又刺激的午夜小视频| 欧美日韩熟女一区二区三区| 午夜精品九一唐人麻豆嫩草成人| 国产内射中出在线观看| 黄色片黄色片wyaa| 人人爽亚洲av人人爽av| 少妇深喉口爆吞精韩国| 亚洲 清纯 国产com| 888欧美视频在线| 全国亚洲男人的天堂| 天天日天天添天天爽| 欧美天堂av无线av欧美| 欧美在线精品一区二区三区视频 | 蜜桃色婷婷久久久福利在线| AV天堂一区二区免费试看| 在线观看av观看av| AV天堂一区二区免费试看| 欧美伊人久久大香线蕉综合| 伊人成人综合开心网| 影音先锋女人av噜噜色| 天天日天天爽天天干| 国产视频在线视频播放| 国产高清在线在线视频| 社区自拍揄拍尻屁你懂的| 在线免费观看欧美小视频| 中文字幕成人日韩欧美| 这里只有精品双飞在线播放| 亚洲无码一区在线影院| 38av一区二区三区| 九九热99视频在线观看97| 久久www免费人成一看片| 摧残蹂躏av一二三区| 亚洲欧美人精品高清| 日韩精品一区二区三区在线播放| 中文字幕人妻熟女在线电影| 视频一区 二区 三区 综合| 一区二区三区欧美日韩高清播放| 亚洲人成精品久久久久久久| 久久麻豆亚洲精品av| 99国内精品永久免费视频| 国产丰满熟女成人视频| 少妇人妻久久久久视频黄片| 日韩av中文在线免费观看| 青青草原色片网站在线观看| 日本女人一级免费片| 欧美老鸡巴日小嫩逼| 亚洲1069综合男同| 亚洲高清自偷揄拍自拍| 国产福利小视频大全| 91小伙伴中女熟女高潮| 亚洲人妻国产精品综合| 亚洲图库另类图片区| 熟女人妻在线中出观看完整版| 中文人妻AV久久人妻水| 亚洲一区二区三区精品视频在线| 国产欧美精品免费观看视频| 国际av大片在线免费观看| 天天躁日日躁狠狠躁av麻豆| 亚洲国产第一页在线观看| 国产亚洲四十路五十路| 无码中文字幕波多野不卡| 大鸡吧插逼逼视频免费看 | 2022天天干天天操| 青青青青操在线观看免费| 亚洲另类图片蜜臀av| 国产精品三级三级三级| 韩国爱爱视频中文字幕| 在线观看黄色成年人网站 | 国产麻豆精品人妻av| 日本啪啪啪啪啪啪啪| 黄页网视频在线免费观看| av天堂中文字幕最新| 欧美日韩国产一区二区三区三州 | 首之国产AV医生和护士小芳| 大陆av手机在线观看| av日韩在线免费播放| 亚洲的电影一区二区三区| 欧美第一页在线免费观看视频| 午夜国产免费福利av| 久久香蕉国产免费天天| 懂色av蜜桃a v| 春色激情网欧美成人| 亚洲熟色妇av日韩熟色妇在线 | 风流唐伯虎电视剧在线观看| 不卡一区一区三区在线| 亚洲国产中文字幕啊啊啊不行了 | 天天日天天操天天摸天天舔| 国产又粗又猛又爽又黄的视频在线 | 91精品国产高清自在线看香蕉网| 天天色天天爱天天爽| av在线免费资源站| 18禁美女黄网站色大片下载| 成年午夜影片国产片| 一区二区三区久久久91| 亚洲在线一区二区欧美| 亚洲美女高潮喷浆视频| 日韩少妇人妻精品无码专区| 人妻在线精品录音叫床| 欧美黑人与人妻精品| 国产日韩欧美视频在线导航| 亚洲av无码成人精品区辽| 日本av熟女在线视频| 91九色porny国产蝌蚪视频| 91综合久久亚洲综合| 青春草视频在线免费播放| 久久精品在线观看一区二区| 亚洲精品乱码久久久本| 精品亚洲中文字幕av| 亚洲精品国偷自产在线观看蜜桃| 成人乱码一区二区三区av| 超污视频在线观看污污污 | 亚洲精品高清自拍av| 91色网站免费在线观看 | 欧美一区二区三区四区性视频| 亚洲福利精品视频在线免费观看| 福利视频网久久91| 天天日天天舔天天射进去| 中文字幕无码日韩专区免费| 国产精品视频一区在线播放| 瑟瑟视频在线观看免费视频| 免费在线观看污污视频网站| 51国产成人精品视频| 91超碰青青中文字幕| 日本人竟这样玩学生妹| 国产精品一二三不卡带免费视频| 亚洲欧美人精品高清| 亚洲在线观看中文字幕av| 午夜在线观看一区视频| 在线观看视频网站麻豆| 国产一区成人在线观看视频| 成人av在线资源网站| 欧美精品免费aaaaaa| 欧美韩国日本国产亚洲| 天天色天天舔天天射天天爽| 亚洲国产欧美一区二区三区…| eeuss鲁片一区二区三区| 精品91自产拍在线观看一区| 大鸡巴操b视频在线| 欧美日韩高清午夜蜜桃大香蕉| 亚洲av日韩av第一区二区三区| 中国把吊插入阴蒂的视频| 亚洲在线观看中文字幕av| 精品久久久久久久久久久a√国产 日本女大学生的黄色小视频 | 四虎永久在线精品免费区二区| 国产又粗又黄又硬又爽| 久久精品国产亚洲精品166m| 99热久久这里只有精品| 特级无码毛片免费视频播放| 视频二区在线视频观看| 久久麻豆亚洲精品av| 免费无毒热热热热热热久| 免费黄色成人午夜在线网站| 中文字幕高清资源站| 9色在线视频免费观看| 99久久99久国产黄毛片| 精品亚洲中文字幕av | 欧美偷拍亚洲一区二区| 日本人竟这样玩学生妹| 喷水视频在线观看这里只有精品 | jiuse91九色视频| 青青青青青青青青青青草青青| 青青草原网站在线观看| 日日操综合成人av| 久久这里只有精彩视频免费| AV无码一区二区三区不卡| 一区二区三区久久久91| 91极品新人『兔兔』精品新作| 视频久久久久久久人妻| 美女大bxxxx内射| 午夜的视频在线观看| 亚洲国产第一页在线观看| 91小伙伴中女熟女高潮| 综合页自拍视频在线播放| 国产午夜激情福利小视频在线| 91桃色成人网络在线观看| 少妇高潮一区二区三区| 国产高清97在线观看视频| 亚洲视频在线视频看视频在线| 最新91九色国产在线观看| 91破解版永久免费| 天堂av狠狠操蜜桃| 成年人黄色片免费网站| 一区二区三区 自拍偷拍| 国产亚洲国产av网站在线| 中文字幕在线永久免费播放| 亚洲欧美一区二区三区爱爱动图| 亚洲国产精品黑丝美女| 亚洲高清免费在线观看视频| 顶级尤物粉嫩小尤物网站| 最后99天全集在线观看| 亚洲 欧美 自拍 偷拍 在线| 亚洲成人av一区在线| 欧洲黄页网免费观看| 日噜噜噜夜夜噜噜噜天天噜噜噜| 欧美男同性恋69视频| 日本后入视频在线观看 | 看一级特黄a大片日本片黑人| 51国产成人精品视频| 国产又粗又硬又大视频| 精品国产在线手机在线| 免费大片在线观看视频网站| 91精品国产观看免费| 91在线视频在线精品3| 亚洲精品欧美日韩在线播放| 亚洲精品久久视频婷婷| av日韩在线观看大全| 99热99re在线播放| 91色九色porny| 五十路息与子猛烈交尾视频| aⅴ五十路av熟女中出| 淫秽激情视频免费观看| gav成人免费播放| 美女福利写真在线观看视频| 1024久久国产精品| av天堂中文免费在线| 中国黄色av一级片| 久久精品亚洲成在人线a| 激情啪啪啪啪一区二区三区| 偷拍自拍 中文字幕| 日本熟妇喷水xxx| 鸡巴操逼一级黄色气| 日日操夜夜撸天天干| 精品国产污污免费网站入口自| 色97视频在线播放| 少妇ww搡性bbb91| 亚洲嫩模一区二区三区| 国产变态另类在线观看| 伊人综合aⅴ在线网| 国产之丝袜脚在线一区二区三区| 亚洲免费视频欧洲免费视频| 少妇露脸深喉口爆吞精| 天天干天天日天天干天天操| 最新日韩av传媒在线| 日韩精品电影亚洲一区| 亚洲国产欧美一区二区三区久久| 93人妻人人揉人人澡人人| 91超碰青青中文字幕| 中文字幕日韩精品日本| 一级a看免费观看网站| 色偷偷伊人大杳蕉综合网| 天天摸天天亲天天舔天天操天天爽| 五十路老熟女码av| 中文字幕人妻被公上司喝醉在线| 国产亚洲精品欧洲在线观看| 国产精品三级三级三级| 欧美黑人与人妻精品| 国产精品伦理片一区二区| 欧美一区二区三区久久久aaa| 欧美精产国品一二三区| 1000部国产精品成人观看视频| 免费一级特黄特色大片在线观看| 啪啪啪18禁一区二区三区| 成人av中文字幕一区| 亚洲一区av中文字幕在线观看| 日本黄色特一级视频| 在线 中文字幕 一区| 亚洲综合另类精品小说| 91极品新人『兔兔』精品新作| 欧美成人一二三在线网| 在线观看一区二区三级| 农村胖女人操逼视频| 91免费福利网91麻豆国产精品| 久久久久久久久久性潮| 91极品大一女神正在播放| 亚洲天堂有码中文字幕视频| 91精品一区二区三区站长推荐| 男生用鸡操女生视频动漫| 手机看片福利盒子日韩在线播放| 成人动漫大肉棒插进去视频| 操日韩美女视频在线免费看| 亚洲 中文 自拍 另类 欧美| 中文字幕无码一区二区免费| 五十路熟女人妻一区二| 精品视频国产在线观看| 成人30分钟免费视频| 一区二区在线视频中文字幕| 黄色录像鸡巴插进去| 内射久久久久综合网| 香蕉91一区二区三区| 黄工厂精品视频在线观看| 免费无毒热热热热热热久| 精品一区二区三区在线观看| 精品久久久久久久久久久99| 老司机你懂得福利视频| 18禁网站一区二区三区四区| 久久久久久久精品老熟妇| 亚洲在线观看中文字幕av| 久久久久久国产精品| 91国产在线免费播放| 青青青国产片免费观看视频| 日韩精品啪啪视频一道免费| 国产 在线 免费 精品| 欧美交性又色又爽又黄麻豆| av手机在线免费观看日韩av| 夏目彩春在线中文字幕| 午夜激情高清在线观看| 久久久久国产成人精品亚洲午夜| 欧美特级特黄a大片免费| 国产一区二区在线欧美| 天天日天天爽天天爽| 91人妻人人做人人爽在线| 精品美女在线观看视频在线观看| 国产免费高清视频视频| 国产午夜男女爽爽爽爽爽视频| 不卡日韩av在线观看| 亚洲视频乱码在线观看| 国产V亚洲V天堂无码欠欠| 欧美怡红院视频在线观看| 宅男噜噜噜666国产| 在线观看911精品国产| 中文字幕在线永久免费播放| 亚洲激情,偷拍视频| av视网站在线观看| 日韩欧美一级精品在线观看| 日韩欧美高清免费在线| 好太好爽好想要免费| 国产精品黄大片在线播放| 黄色的网站在线免费看| 国产精品视频欧美一区二区| 国产av国片精品一区二区| 91免费放福利在线观看| 新97超碰在线观看| 啪啪啪18禁一区二区三区| av中文在线天堂精品| 亚洲国产精品免费在线观看| 精品一区二区三区三区色爱| 日本a级视频老女人| 国产视频精品资源网站| 亚洲精品成人网久久久久久小说| 黄色录像鸡巴插进去| 北条麻妃av在线免费观看| 99re6热在线精品| 亚洲国产免费av一区二区三区| 亚洲成人黄色一区二区三区| 99精品视频之69精品视频| 午夜激情久久不卡一区二区| 91色网站免费在线观看| 欧美精产国品一二三区| 91大神福利视频网| 午夜久久久久久久99| 国产白嫩美女一区二区| 超碰在线观看免费在线观看| 老司机深夜免费福利视频在线观看| 一级a看免费观看网站| 人妻最新视频在线免费观看| 青娱乐在线免费视频盛宴| 天天操天天爽天天干| 精品久久久久久久久久久久人妻| 女蜜桃臀紧身瑜伽裤| 中文字幕第三十八页久久| 日韩a级黄色小视频| 91在线视频在线精品3| 亚洲成人精品女人久久久| 午夜精品一区二区三区更新| 成年人午夜黄片视频资源| 色吉吉影音天天干天天操 | 快点插进来操我逼啊视频| 免费成人va在线观看| 日韩熟女av天堂系列| 丰满少妇人妻xxxxx| 日韩中文字幕在线播放第二页 | 亚洲综合在线观看免费| 熟女国产一区亚洲中文字幕| 亚洲欧洲一区二区在线观看| 久久丁香婷婷六月天| 啪啪啪啪啪啪啪啪啪啪黄色| 成人国产激情自拍三区| 国产1区,2区,3区| 婷婷五月亚洲综合在线| 免费无码人妻日韩精品一区二区| 999久久久久999| 亚洲欧美国产麻豆综合| 丝袜肉丝一区二区三区四区在线| 93视频一区二区三区| 77久久久久国产精产品| 天天日天天鲁天天操| 日韩伦理短片在线观看| 极品粉嫩小泬白浆20p主播| 新97超碰在线观看| 超碰在线中文字幕一区二区| 阿v天堂2014 一区亚洲| 97国产在线av精品| 欧洲亚洲欧美日韩综合| 男人的天堂一区二区在线观看| 在线国产精品一区二区三区| 91福利视频免费在线观看| 欧美在线偷拍视频免费看| 伊拉克及约旦宣布关闭领空| 国产一区二区神马久久| 天天摸天天日天天操| 日本高清成人一区二区三区| AV无码一区二区三区不卡| 93视频一区二区三区| 精品av久久久久久久| 中文字幕1卡1区2区3区| 人妻丝袜精品中文字幕| 国产福利小视频二区| 欧美特级特黄a大片免费| 色呦呦视频在线观看视频| 懂色av之国产精品| 热久久只有这里有精品| 久久久久久9999久久久久| 中文字幕AV在线免费看 | 天天干天天日天天谢综合156| av在线免费中文字幕| 国产在线免费观看成人| 91精品国产91久久自产久强| 在线观看视频 你懂的| 久碰精品少妇中文字幕av| 粗大的内捧猛烈进出爽大牛汉子| 真实国产乱子伦一区二区| 97色视频在线观看| 久久精品亚洲国产av香蕉| 91精品国产综合久久久蜜| 天天想要天天操天天干| 5528327男人天堂| sw137 中文字幕 在线| 99精品一区二区三区的区| 青娱乐最新视频在线| 久久www免费人成一看片| 蜜桃精品久久久一区二区| 93精品视频在线观看| 国产精品久久久久网| 日本脱亚入欧是指什么| 欧美成人猛片aaaaaaa| 成人免费做爰高潮视频| 国产老熟女伦老熟妇ⅹ| 黑人进入丰满少妇视频| 又色又爽又黄又刺激av网站| 国产精品三级三级三级| 偷拍自拍国产在线视频| 国产精品亚洲在线观看| av中文字幕国产在线观看| 成年人黄视频在线观看| 欧美偷拍亚洲一区二区| 亚洲狠狠婷婷综合久久app | 青青青青青青青青青青草青青 | 日辽宁老肥女在线观看视频| 人妻自拍视频中国大陆| 成人综合亚洲欧美一区| 超鹏97历史在线观看| 天天色天天爱天天爽| 大鸡吧插入女阴道黄色片| 亚洲午夜在线视频福利| 香蕉91一区二区三区| 91麻豆精品秘密入口在线观看| 成年人该看的视频黄免费| 精品黑人一区二区三区久久国产| 欧美亚洲国产成人免费在线 | 久久久久久国产精品| 超碰在线中文字幕一区二区| 国产黄色大片在线免费播放| 亚洲国产精品久久久久蜜桃| 久久麻豆亚洲精品av| 亚洲国产香蕉视频在线播放| 自拍偷拍亚洲另类色图| 日日夜夜大香蕉伊人| 91老师蜜桃臀大屁股| 国产精品黄片免费在线观看| 国内自拍第一页在线观看| 1769国产精品视频免费观看| 中文字幕视频一区二区在线观看 | 2022精品久久久久久中文字幕| 免费成人av中文字幕| 老司机你懂得福利视频| 人人超碰国字幕观看97| 国产性生活中老年人视频网站| 亚洲精品无码久久久久不卡| 成人影片高清在线观看| 很黄很污很色的午夜网站在线观看 | 午夜久久香蕉电影网| 久久艹在线观看视频| 亚洲熟女女同志女同| 91九色porny蝌蚪国产成人| 熟女人妻一区二区精品视频| 日本a级视频老女人| 91在线视频在线精品3| 欧美精品欧美极品欧美视频 | 99精品视频在线观看婷婷| 国产男女视频在线播放| 在线不卡成人黄色精品| 自拍偷拍亚洲精品第2页| 三级等保密码要求条款| 久久热这里这里只有精品| 亚洲成人午夜电影在线观看 | 麻豆性色视频在线观看| 男人的天堂一区二区在线观看| 小穴多水久久精品免费看| av完全免费在线观看av| 人人妻人人人操人人人爽| 国产高清精品极品美女| 欧美男人大鸡吧插女人视频 | 欧美精品 日韩国产| 日本午夜爽爽爽爽爽视频在线观看| 日韩国产乱码中文字幕| 亚洲精品高清自拍av| 女蜜桃臀紧身瑜伽裤| 熟女91pooyn熟女| 国产又粗又猛又爽又黄的视频美国| 五十路丰满人妻熟妇| 国产密臀av一区二区三| 亚洲精品亚洲人成在线导航| 姐姐的朋友2在线观看中文字幕| 黄页网视频在线免费观看| 97国产在线观看高清| 春色激情网欧美成人| 国产黄色大片在线免费播放| 18禁污污污app下载| 2019av在线视频| 一区二区三区国产精选在线播放| 一色桃子久久精品亚洲| 中文字幕在线观看国产片| 午夜91一区二区三区| 国产欧美精品不卡在线| 亚洲粉嫩av一区二区三区| 强行扒开双腿猛烈进入免费版| 国产视频一区二区午夜| 1024久久国产精品| 福利视频一区二区三区筱慧| 99国内小视频在现欢看| 中文字幕熟女人妻久久久| 久久艹在线观看视频| 亚洲精品午夜aaa久久| 色偷偷伊人大杳蕉综合网| 精品suv一区二区69| 亚洲一级av无码一级久久精品| 91九色国产porny蝌蚪| 天天色天天操天天透| 日本免费午夜视频网站| 亚洲精品国产久久久久久| 国产高清精品一区二区三区| 精品黑人一区二区三区久久国产 | 播放日本一区二区三区电影| 精品一线二线三线日本| 久久久久只精品国产三级| 成人蜜臀午夜久久一区| 欧美激情电影免费在线| 欧美中文字幕一区最新网址| 亚洲成人黄色一区二区三区| 国产日韩欧美视频在线导航| 国产乱子伦一二三区| 亚洲成人午夜电影在线观看| 久久久麻豆精亚洲av麻花| 日韩一个色综合导航| 女蜜桃臀紧身瑜伽裤| 中文字幕日韩人妻在线三区| 777奇米久久精品一区| 精品一线二线三线日本| 人妻丝袜av在线播放网址| 不卡精品视频在线观看| 97国产在线av精品| 欧美在线精品一区二区三区视频| 男女啪啪啪啪啪的网站| 国产 在线 免费 精品| mm131美女午夜爽爽爽| 大陆胖女人与丈夫操b国语高清| 在线免费91激情四射| 欧美日韩熟女一区二区三区| 99精品国自产在线人| 欧美激情电影免费在线| 老司机99精品视频在线观看| 国产亚洲四十路五十路| 中文字幕无码一区二区免费| 日本真人性生活视频免费看| 婷婷激情四射在线观看视频| 亚洲成人国产综合一区| 国产精品久久久久国产三级试频| 最新中文字幕乱码在线| 国产+亚洲+欧美+另类| 亚洲 自拍 色综合图| 国产白袜脚足J棉袜在线观看| 国产精选一区在线播放| 边摸边做超爽毛片18禁色戒| 超碰97免费人妻麻豆| 免费看高清av的网站| 久草视频首页在线观看| 在线可以看的视频你懂的| 五十路丰满人妻熟妇| 成人乱码一区二区三区av| 2021天天色天天干| 国产综合精品久久久久蜜臀| 欧洲日韩亚洲一区二区三区| 国产视频网站一区二区三区| 天天做天天干天天舔| 999九九久久久精品| 人妻无码色噜噜狠狠狠狠色| 色天天天天射天天舔| 精产国品久久一二三产区区别| 粉嫩小穴流水视频在线观看| 中国熟女@视频91| 欧美久久久久久三级网| 亚洲精品高清自拍av| 中文字幕无码一区二区免费| 最新国产亚洲精品中文在线| 337p日本大胆欧美人| 最新激情中文字幕视频| 91综合久久亚洲综合| 亚洲国产欧美一区二区丝袜黑人| 中文字幕高清在线免费播放| 都市家庭人妻激情自拍视频| 人妻少妇精品久久久久久| 极品粉嫩小泬白浆20p主播| 亚洲一区二区三区偷拍女厕91| 把腿张开让我插进去视频| 福利一二三在线视频观看| 亚洲一区二区久久久人妻| 欧美精品 日韩国产| 国产使劲操在线播放| 亚洲 欧美 精品 激情 偷拍| 亚洲第一伊人天堂网| 欧美交性又色又爽又黄麻豆| 亚洲天堂精品久久久| 我想看操逼黄色大片| 100%美女蜜桃视频| 免费费一级特黄真人片| 91自产国产精品视频| 中文字幕在线欧美精品| av在线播放国产不卡| 亚洲精品国产在线电影| 日本午夜爽爽爽爽爽视频在线观看 | 99国产精品窥熟女精品| 日本黄色特一级视频| 哥哥姐姐综合激情小说| 制服丝袜在线人妻中文字幕| 福利午夜视频在线合集| 午夜在线观看岛国av,com| 福利视频广场一区二区| 中国熟女一区二区性xx| 大骚逼91抽插出水视频| 色哟哟国产精品入口| 天天日夜夜操天天摸| 青青草在观免费国产精品| 黑人巨大的吊bdsm| 国产超码片内射在线| 大香蕉玖玖一区2区| 亚洲午夜精品小视频| 免费大片在线观看视频网站| 免费观看成年人视频在线观看| 岛国青草视频在线观看| 91小伙伴中女熟女高潮| 偷拍自拍国产在线视频| 国产精品自拍视频大全| 亚洲av日韩精品久久久| 国产精品一二三不卡带免费视频| 欧美亚洲一二三区蜜臀| 久久久久91精品推荐99| 97人妻人人澡爽人人精品| 亚洲成高清a人片在线观看| 亚洲综合在线视频可播放| 爱有来生高清在线中文字幕| 中文字幕一区的人妻欧美日韩| av大全在线播放免费| 一区二区三区四区视频在线播放| 成人性黑人一级av| 爱爱免费在线观看视频| 亚洲综合色在线免费观看| 久久热这里这里只有精品| 搞黄色在线免费观看| 日韩人妻在线视频免费| 中文字幕国产专区欧美激情| 久久www免费人成一看片| 视频久久久久久久人妻| 国产成人一区二区三区电影网站| 午夜蜜桃一区二区三区| 国产中文精品在线观看| 黄色视频成年人免费观看| 日本熟女精品一区二区三区| 热99re69精品8在线播放| 97精品人妻一区二区三区精品| 少妇被强干到高潮视频在线观看| 天天射,天天操,天天说| 中文字幕日本人妻中出| 久久久久久九九99精品| 日本乱人一区二区三区| 不卡日韩av在线观看| 天天日天天干天天舔天天射| 在线观看免费视频网| 91国偷自产一区二区三区精品| 91色九色porny| 欧美性受xx黑人性猛交| 初美沙希中文字幕在线| 亚洲免费va在线播放| 亚洲av在线观看尤物| 大肉大捧一进一出好爽在线视频| 亚洲av一妻不如妾| av中文字幕在线观看第三页| 99婷婷在线观看视频| 人妻在线精品录音叫床| 免费在线看的黄网站| 无码中文字幕波多野不卡| 成人免费做爰高潮视频| 国产精品日韩欧美一区二区| 国产精品一二三不卡带免费视频 | 91老熟女连续高潮对白| 亚洲综合另类精品小说| 超级福利视频在线观看| 国产欧美精品一区二区高清| 亚洲高清视频在线不卡| 免费看高清av的网站| 成人影片高清在线观看| 一本一本久久a久久精品综合不卡| 人人在线视频一区二区| 亚洲欧美自拍另类图片| 欧洲欧美日韩国产在线| 天天做天天干天天操天天射| 丝袜长腿第一页在线| 自拍偷拍vs一区二区三区| 欧美一区二区三区四区性视频| 97少妇精品在线观看| 精品黑人巨大在线一区| 亚洲欧美清纯唯美另类| 国产精选一区在线播放| 精品久久久久久高潮| 亚洲 人妻 激情 中文| 亚洲专区激情在线观看视频| 欧美亚洲偷拍自拍色图| 人妻丝袜诱惑我操她视频| 美女视频福利免费看| 中文人妻AV久久人妻水| 亚洲国产精品久久久久久6| 少妇深喉口爆吞精韩国| 免费一级黄色av网站| av男人天堂狠狠干| 最新激情中文字幕视频| 亚洲自拍偷拍精品网| 黑人性生活视频免费看| 日本免费午夜视频网站| 日本xx片在线观看| 青青青青青操视频在线观看| 日韩人妻xxxxx| 激情人妻校园春色亚洲欧美 | 人妻少妇av在线观看| 国产成人无码精品久久久电影| 66久久久久久久久久久| 欧美日本在线观看一区二区| av大全在线播放免费| 中文字幕综合一区二区| 国产男女视频在线播放| 欧美国品一二三产区区别| 91欧美在线免费观看| 日本在线一区二区不卡视频| 亚洲成高清a人片在线观看| 亚洲激情av一区二区| 午夜精品在线视频一区| 亚洲高清视频在线不卡| 久久丁香花五月天色婷婷| 亚洲人妻av毛片在线| 亚洲天天干 夜夜操| 99久久99久国产黄毛片| 少妇一区二区三区久久久| 阿v天堂2014 一区亚洲| 欧美亚洲牲夜夜综合久久| 亚洲欧美人精品高清| 最新黄色av网站在线观看| 边摸边做超爽毛片18禁色戒 | 天天摸天天干天天操科普| 日韩欧美一级精品在线观看| 国产男女视频在线播放| 欧美日韩中文字幕欧美| av无限看熟女人妻另类av| weyvv5国产成人精品的视频| 亚洲av香蕉一区区二区三区犇| 欧美亚洲一二三区蜜臀| 欧美激情电影免费在线| 特级欧美插插插插插bbbbb| 深夜男人福利在线观看| 只有精品亚洲视频在线观看| 日韩人妻xxxxx| 日本免费一级黄色录像| 日日操综合成人av| 红杏久久av人妻一区| 亚洲福利精品福利精品福利| 自拍偷拍亚洲另类色图| 青青青青青手机视频| 亚洲卡1卡2卡三卡四老狼| 亚洲免费av在线视频| av成人在线观看一区| 大陆胖女人与丈夫操b国语高清 | 中国黄色av一级片| 瑟瑟视频在线观看免费视频| 午夜成午夜成年片在线观看| 亚洲福利午夜久久久精品电影网 | 久久精品国产23696| 精品av国产一区二区三区四区| 国产高清精品极品美女| 日本少妇的秘密免费视频| 丰满的继坶3中文在线观看| 欧美亚洲国产成人免费在线| 淫秽激情视频免费观看| 红杏久久av人妻一区| 人妻久久久精品69系列| 成人av在线资源网站| 亚洲国产成人在线一区| 日韩国产乱码中文字幕| 精品区一区二区三区四区人妻| 国产视频一区二区午夜| 国产精品久久久久久久精品视频| 午夜精品一区二区三区更新| 自拍偷拍vs一区二区三区| 熟女人妻在线观看视频| 日韩熟女系列一区二区三区| 欧洲欧美日韩国产在线| 欧美天堂av无线av欧美| 亚洲一区二区激情在线| 一本一本久久a久久精品综合不卡| 亚洲蜜臀av一区二区三区九色 | 大鸡巴操娇小玲珑的女孩逼| 性感美女诱惑福利视频| 日韩无码国产精品强奸乱伦| 夜夜骑夜夜操夜夜奸| 日本女人一级免费片| 天天日天天爽天天爽| 一区二区视频在线观看视频在线| 国产实拍勾搭女技师av在线| 天天草天天色天天干| 97人妻人人澡爽人人精品| 中英文字幕av一区| 91精品国产麻豆国产| 天堂av中文在线最新版| 国产麻豆国语对白露脸剧情| 国产女孩喷水在线观看| 最新91精品视频在线| 亚洲欧洲一区二区在线观看| 亚洲 欧美 自拍 偷拍 在线| 适合午夜一个人看的视频| 中国视频一区二区三区| 99精品视频之69精品视频 | 欧美日韩高清午夜蜜桃大香蕉| 午夜美女福利小视频| 亚洲成人情色电影在线观看| 欧美日韩一区二区电影在线观看| 天天爽夜夜爽人人爽QC| 欧美成人综合色在线噜噜| 91chinese在线视频| 国产在线免费观看成人| 人人妻人人澡欧美91精品| 亚洲偷自拍高清视频| 亚洲午夜精品小视频| 91国内精品久久久久精品一| 蜜桃精品久久久一区二区| 97年大学生大白天操逼| 日本男女操逼视频免费看| 少妇人妻真实精品视频| 在线国产中文字幕视频| 亚洲欧美成人综合在线观看| 久草视频 久草视频2| 91九色国产熟女一区二区| 中文亚洲欧美日韩无线码| 日日爽天天干夜夜操| 欧美区一区二区三视频| 成人国产影院在线观看| 欧美色婷婷综合在线| 婷婷五月亚洲综合在线| 欧美中国日韩久久精品| 午夜激情久久不卡一区二区| 97黄网站在线观看| 亚洲免费在线视频网站| 国产一区二区火爆视频| 久久久久久久亚洲午夜综合福利| 成人综合亚洲欧美一区 | 亚洲1区2区3区精华液| 大香蕉玖玖一区2区| av亚洲中文天堂字幕网| av天堂资源最新版在线看| 天天射,天天操,天天说| 日韩av免费观看一区| 日本丰满熟妇BBXBBXHD| 亚洲一区自拍高清免费视频| 亚洲欧美激情中文字幕| 久久精品亚洲国产av香蕉| 黄色片黄色片wyaa| 青青青青操在线观看免费| 黄色无码鸡吧操逼视频| 久久久91蜜桃精品ad| 久久精品亚洲成在人线a| 国产高清精品极品美女| 亚洲精品国品乱码久久久久| 中文字幕第一页国产在线| 好吊视频—区二区三区| 在线观看黄色成年人网站| 欧美色呦呦最新网址| 一区二区三区蜜臀在线| 一区二区三区在线视频福利| 欧美色呦呦最新网址| 黑人巨大的吊bdsm| av中文字幕福利网| 中文字幕在线永久免费播放| 久久久久久九九99精品| 五十路息与子猛烈交尾视频 | 99热久久这里只有精品8| 欧美交性又色又爽又黄麻豆| 精品视频中文字幕在线播放 | 欧美一区二区三区高清不卡tv| 成人蜜臀午夜久久一区| 日本三极片中文字幕| 欧美激情精品在线观看| 这里只有精品双飞在线播放| 国产大鸡巴大鸡巴操小骚逼小骚逼| 美女日逼视频免费观看| 天天干夜夜操啊啊啊| 夜夜嗨av蜜臀av| 免费大片在线观看视频网站| 欧美日韩情色在线观看| 男女啪啪视频免费在线观看| 国产白嫩美女一区二区| 国产在线免费观看成人| 欧美精品久久久久久影院| 东京热男人的av天堂| 久久精品国产亚洲精品166m| 一区二区三区综合视频| eeuss鲁片一区二区三区| 啪啪啪18禁一区二区三区 | 视频二区在线视频观看 | 一色桃子人妻一区二区三区| 超碰97人人做人人爱| 国产日本欧美亚洲精品视| 天天操天天干天天插| 玖玖一区二区在线观看| 日韩黄色片在线观看网站| 亚洲av日韩高清hd| 午夜极品美女福利视频| 国产美女精品福利在线| 精品美女在线观看视频在线观看| 亚洲精品av在线观看| 亚洲成人国产综合一区| 久久一区二区三区人妻欧美| 青青青青草手机在线视频免费看 | 久久久久久cao我的性感人妻| 特级欧美插插插插插bbbbb| 插小穴高清无码中文字幕| 久久久久久cao我的性感人妻| 中文字幕日韩精品日本| 精品高跟鞋丝袜一区二区| 99精品视频在线观看婷婷| 啪啪啪啪啪啪啪免费视频| 一二三中文乱码亚洲乱码one| 国产av福利网址大全| 日本性感美女写真视频| 大香蕉福利在线观看| 欧美精品伦理三区四区| 五十路丰满人妻熟妇| a v欧美一区=区三区| 国产精品久久久久久久精品视频| 大香蕉伊人国产在线| 黑人解禁人妻叶爱071| 天天日天天天天天天天天天天| wwwxxx一级黄色片| 国产日韩精品电影7777| 亚洲精品国产综合久久久久久久久| 天天摸天天亲天天舔天天操天天爽| 综合页自拍视频在线播放| 亚洲1区2区3区精华液| 99精品国产aⅴ在线观看| 美女吃鸡巴操逼高潮视频| 精品国产午夜视频一区二区| 女同性ⅹxx女同hd| 久久农村老妇乱69系列| 99热色原网这里只有精品| 在线观看一区二区三级| 视频一区二区综合精品| 91极品新人『兔兔』精品新作| 欧美亚洲少妇福利视频| 天天干天天日天天谢综合156| 不卡一区一区三区在线| 特大黑人巨大xxxx| 中文字幕第三十八页久久| 新97超碰在线观看| 中文字幕乱码av资源| 白白操白白色在线免费视频| 日韩人妻丝袜中文字幕| 老师让我插进去69AV| 亚洲美女自偷自拍11页| www日韩a级s片av| 11久久久久久久久久久| 欧美女同性恋免费a| 中文字幕一区二区三区蜜月| 韩国三级aaaaa高清视频 | 欧美日韩人妻久久精品高清国产| 51国产偷自视频在线播放| 新婚人妻聚会被中出| 日韩欧美亚洲熟女人妻| 玖玖一区二区在线观看| 9久在线视频只有精品| 四虎永久在线精品免费区二区| 久草视频首页在线观看| 日韩欧美中文国产在线| 欧美偷拍自拍色图片| 国产精品日韩欧美一区二区| 人妻丰满熟妇综合网| 四川五十路熟女av| 国产女人露脸高潮对白视频| 9久在线视频只有精品| 经典av尤物一区二区| 午夜免费体验区在线观看 | 深田咏美亚洲一区二区| 亚洲精品 日韩电影| 久久久精品精品视频视频| 最新日韩av传媒在线| 国产白袜脚足J棉袜在线观看| 国产黄色高清资源在线免费观看| 人人超碰国字幕观看97| 中文字幕免费福利视频6| 国产精品亚洲在线观看| 一区二区三区美女毛片| 日本后入视频在线观看 | 日韩熟女av天堂系列| 婷婷色中文亚洲网68| 色婷婷久久久久swag精品| 欧美精品一区二区三区xxxx| 五十路av熟女松本翔子| 日韩av熟妇在线观看| 亚洲一级特黄特黄黄色录像片| 18禁免费av网站| 护士特殊服务久久久久久久| 一区二区三区精品日本| 狠狠鲁狠狠操天天晚上干干| 91天堂天天日天天操| 亚洲第一黄色在线观看| 夜色17s精品人妻熟女| 最新91精品视频在线| 成人资源在线观看免费官网| 中文字幕亚洲中文字幕| 一区二区在线观看少妇| 日韩人妻xxxxx| 欧美特色aaa大片| 我想看操逼黄色大片| 中文字幕午夜免费福利视频| 精品一区二区三区午夜| 性感美女高潮视频久久久| 欧美一区二区三区激情啪啪啪| 亚洲视频在线视频看视频在线| 青青青国产免费视频| 亚洲一区自拍高清免费视频| 亚洲色偷偷综合亚洲AV伊人| 亚洲欧洲一区二区在线观看| 日本在线不卡免费视频| 人妻丰满熟妇综合网| 久久精品国产亚洲精品166m| 亚洲最大黄了色网站| 91人妻精品一区二区在线看| 2012中文字幕在线高清| 欧美精品欧美极品欧美视频| 亚洲一级特黄特黄黄色录像片| 大香蕉伊人国产在线| 国产美女精品福利在线| 久草视频福利在线首页| 青青色国产视频在线| japanese日本熟妇另类| 熟女视频一区,二区,三区| 一区二区熟女人妻视频| 天天插天天色天天日| 少妇人妻久久久久视频黄片| 99热久久这里只有精品| 精品区一区二区三区四区人妻 | 又大又湿又爽又紧A视频| 日本三极片中文字幕| 人妻熟女中文字幕aⅴ在线| 欧美日韩v中文在线| 国产精彩福利精品视频| 亚洲欧美激情人妻偷拍| 夜夜骑夜夜操夜夜奸| 日本中文字幕一二区视频| 国产精品成久久久久三级蜜臀av | 天天日天天干天天插舔舔| 大鸡巴后入爆操大屁股美女| 99热碰碰热精品a中文| 国产剧情演绎系列丝袜高跟| 日韩午夜福利精品试看| 亚洲中文字幕乱码区| 国产精品视频一区在线播放| 大陆精品一区二区三区久久| 国产91久久精品一区二区字幕| 亚洲 欧美 自拍 偷拍 在线| 粉嫩欧美美人妻小视频| 韩国黄色一级二级三级| 粉嫩av蜜乳av蜜臀| 国产亚洲成人免费在线观看| 免费成人av中文字幕| 亚洲精品国产在线电影| 中文字幕日韩人妻在线三区| 一区二区视频在线观看视频在线 | 日韩精品中文字幕播放| 国产黄色高清资源在线免费观看| 成年人啪啪视频在线观看| japanese五十路熟女熟妇| 久草极品美女视频在线观看| 午夜久久久久久久精品熟女 | 国产黄色片在线收看| 色偷偷伊人大杳蕉综合网| 日本午夜福利免费视频| 99婷婷在线观看视频| 亚洲va欧美va人人爽3p| 中文字幕 亚洲av| 亚洲欧美激情人妻偷拍| 玩弄人妻熟妇性色av少妇| 久草视频在线免播放| 中国熟女一区二区性xx| 欧美天堂av无线av欧美| 精品suv一区二区69| 91国内精品久久久久精品一| 五十路人妻熟女av一区二区| 97a片免费在线观看| 日本少妇的秘密免费视频| 久久久久久久精品老熟妇| 中文字幕网站你懂的| 福利视频广场一区二区| 国产 在线 免费 精品| 性欧美日本大妈母与子| av视网站在线观看| 中文字幕在线第一页成人| 国产午夜亚洲精品麻豆| 国产视频网站一区二区三区| 91精品国产黑色丝袜| 亚洲精品中文字幕下载| av视屏免费在线播放| 色婷婷综合激情五月免费观看 | 午夜毛片不卡在线看| 天天插天天狠天天操| 大香蕉福利在线观看| 日本高清撒尿pissing| 国内精品在线播放第一页| 日韩一区二区三区三州| 91极品大一女神正在播放| 欧美精品一区二区三区xxxx| 11久久久久久久久久久| 国产使劲操在线播放| 91精品激情五月婷婷在线| 国产午夜福利av导航| 中文字幕高清在线免费播放| 天码人妻一区二区三区在线看| 欧美成人精品欧美一级黄色| 91精品国产91久久自产久强 | 亚洲欧美激情中文字幕| 青草久久视频在线观看| 久草视频福利在线首页| 色婷婷久久久久swag精品| 精品首页在线观看视频| 家庭女教师中文字幕在线播放| 日韩中文字幕精品淫| 伊人情人综合成人久久网小说| 天天日天天干天天插舔舔| jiuse91九色视频| 我想看操逼黄色大片| 91九色porny蝌蚪国产成人| 曰本无码人妻丰满熟妇啪啪| 亚洲特黄aaaa片| tube69日本少妇| 亚洲麻豆一区二区三区| 东京热男人的av天堂| 五月天色婷婷在线观看视频免费| 日本少妇在线视频大香蕉在线观看| 粉嫩小穴流水视频在线观看| 精彩视频99免费在线| 亚洲国产成人无码麻豆艾秋| 日本少妇在线视频大香蕉在线观看| 亚洲va天堂va国产va久| av天堂加勒比在线| 国产在线自在拍91国语自产精品| 抽查舔水白紧大视频| 人妻久久久精品69系列| 日本性感美女视频网站| 天天日天天鲁天天操| 国产熟妇一区二区三区av| 午夜频道成人在线91| 天天爽夜夜爽人人爽QC| 日本免费午夜视频网站| 国产一区二区欧美三区| 亚洲av人人澡人人爽人人爱| 久久久久久性虐视频| 亚洲青青操骚货在线视频| 成年人午夜黄片视频资源| 亚洲高清免费在线观看视频| 天天综合天天综合天天网| 五月激情婷婷久久综合网| 国产又粗又硬又猛的毛片视频| 亚洲一区久久免费视频| 日韩在线中文字幕色| 黄色三级网站免费下载| 日韩在线中文字幕色| 国产极品精品免费视频| 92福利视频午夜1000看| 亚洲成人国产综合一区| 国产精品欧美日韩区二区| 国产成人精品午夜福利训2021| 亚洲熟女久久久36d| 日韩在线中文字幕色| 亚洲日产av一区二区在线| 精品一区二区三四区| 色秀欧美视频第一页| 18禁网站一区二区三区四区| 2012中文字幕在线高清| 在线免费91激情四射| 亚洲av天堂在线播放| 国产夫妻视频在线观看免费| 亚洲一区二区三区五区| 欧美一区二区中文字幕电影| 午夜av一区二区三区| 91超碰青青中文字幕| 国产白袜脚足J棉袜在线观看| 欧美一区二区三区在线资源| 操日韩美女视频在线免费看| 欧美精品中文字幕久久二区| 搡老熟女一区二区在线观看| 99av国产精品欲麻豆| 天天插天天狠天天操| 阴茎插到阴道里面的视频| 国产真实灌醉下药美女av福利| 日韩中文字幕在线播放第二页| 无码中文字幕波多野不卡| 国产成人午夜精品福利| 丰满少妇翘臀后进式| 婷婷综合亚洲爱久久| 亚洲精品无码色午夜福利理论片| 国产福利在线视频一区| 一区二区三区综合视频| 国产精品久久久黄网站| 三上悠亚和黑人665番号| 日韩北条麻妃一区在线| 亚洲欧洲av天堂综合| 搡老妇人老女人老熟女| 亚洲天堂av最新网址| 日本女大学生的黄色小视频| 国产乱弄免费视频观看| 亚洲一级 片内射视正片| av天堂资源最新版在线看| 天天日天天舔天天射进去| 亚洲综合一区二区精品久久| 丝袜美腿视频诱惑亚洲无| 在线制服丝袜中文字幕| 色偷偷伊人大杳蕉综合网| 黄色片年轻人在线观看| 亚洲综合在线观看免费| 在线观看av2025| 天天艹天天干天天操| 国产女人被做到高潮免费视频 | 大尺度激情四射网站| 中文字幕中文字幕 亚洲国产| 十八禁在线观看地址免费| 婷婷综合蜜桃av在线| 内射久久久久综合网| 99久久99久国产黄毛片| 在线视频精品你懂的| 亚洲成人三级在线播放| 成人av中文字幕一区| 国产97视频在线精品| 成人福利视频免费在线| 欧美成一区二区三区四区| 538精品在线观看视频| 热99re69精品8在线播放| 在线成人日韩av电影| 成人高潮aa毛片免费| 久久久精品国产亚洲AV一| 亚洲一区二区激情在线| 全国亚洲男人的天堂| 在线观看911精品国产| av久久精品北条麻妃av观看| 国产实拍勾搭女技师av在线| 日韩二区视频一线天婷婷五| 中英文字幕av一区| 中文字幕中文字幕 亚洲国产| 成年午夜影片国产片| 午夜毛片不卡免费观看视频| 天天干天天操天天玩天天射| 欧美精品中文字幕久久二区| 亚洲av色香蕉一区二区三区| 日日夜夜大香蕉伊人| 天天日天天干天天干天天日| 天天日天天做天天日天天做| 国产高潮无码喷水AV片在线观看| 成人av亚洲一区二区| 天天操夜夜操天天操天天操| 成人亚洲精品国产精品| 亚洲一区二区人妻av| 91精品国产91青青碰| 欧美专区第八页一区在线播放| 中文字幕日本人妻中出| 色狠狠av线不卡香蕉一区二区| 国产精品伦理片一区二区| 一级a看免费观看网站| 国产V亚洲V天堂无码欠欠 | 亚洲精品国产综合久久久久久久久| brazzers欧熟精品系列| 男人的天堂一区二区在线观看| 欧美中文字幕一区最新网址| 亚洲蜜臀av一区二区三区九色| 中文字幕一区二区三区人妻大片| 啊啊啊想要被插进去视频| 亚洲在线免费h观看网站| 青青草在观免费国产精品| 国产熟妇乱妇熟色T区| 亚洲va国产va欧美精品88| 99热色原网这里只有精品| 国产真实乱子伦a视频| 欧美日韩精品永久免费网址| 日本人妻少妇18—xx| 国产清纯美女al在线| 不卡一不卡二不卡三| 日韩av有码一区二区三区4 | 欧美男人大鸡吧插女人视频| 国产+亚洲+欧美+另类| 大陆胖女人与丈夫操b国语高清| 18禁美女羞羞免费网站| 亚洲欧洲一区二区在线观看| 一色桃子人妻一区二区三区| 亚洲中文字幕乱码区| 国产精品视频资源在线播放| 激情小视频国产在线| 国产精品午夜国产小视频| av乱码一区二区三区| 国产精品黄片免费在线观看| 骚货自慰被发现爆操| 人妻少妇亚洲精品中文字幕| 国产亚洲视频在线观看| 免费在线播放a级片| 在线国产中文字幕视频| 538精品在线观看视频| 大鸡巴插入美女黑黑的阴毛| japanese日本熟妇另类| 国产成人精品亚洲男人的天堂| 天天做天天干天天舔| 日本少妇高清视频xxxxx| 欧美一区二区三区久久久aaa| 欧美成人小视频在线免费看| 老司机福利精品免费视频一区二区| 九色视频在线观看免费| 青青操免费日综合视频观看| 日本人竟这样玩学生妹| 成人性黑人一级av| 综合精品久久久久97| 人人超碰国字幕观看97| AV天堂一区二区免费试看| 日本免费午夜视频网站| 91中文字幕免费在线观看| 中文字幕人妻被公上司喝醉在线| 成人av亚洲一区二区| 亚洲精品色在线观看视频| 99亚洲美女一区二区三区| 绝色少妇高潮3在线观看| 日韩欧美高清免费在线| 日比视频老公慢点好舒服啊| 2021久久免费视频| 亚洲综合色在线免费观看| 亚洲人妻av毛片在线| 免费无码人妻日韩精品一区二区 | 4个黑人操素人视频网站精品91| 在线免费观看亚洲精品电影| 国产日韩精品免费在线| 亚洲福利天堂久久久久久| 五十路熟女人妻一区二| 香港一级特黄大片在线播放| 黄色黄色黄片78在线| 黄色录像鸡巴插进去| 青青操免费日综合视频观看| 超碰97人人澡人人| 欧美第一页在线免费观看视频| 日本少妇在线视频大香蕉在线观看| 18禁美女无遮挡免费| 婷婷六月天中文字幕| 国产一区二区视频观看| av在线观看网址av| 久久久久久国产精品| 中文字幕—97超碰网| 中文字幕日韩无敌亚洲精品| 亚洲av琪琪男人的天堂| 啊啊啊想要被插进去视频| 天堂va蜜桃一区入口| 人妻另类专区欧美制服| 国产精品久久综合久久| 91传媒一区二区三区| 中文字幕人妻熟女在线电影| 香港一级特黄大片在线播放 | 美女少妇亚洲精选av| 动漫av网站18禁| 熟女俱乐部一二三区| 一区二区在线视频中文字幕| 国产麻豆国语对白露脸剧情 | 亚洲视频在线视频看视频在线| 五月天久久激情视频| 亚洲成av人无码不卡影片一| 精品国产在线手机在线| www,久久久,com| 熟女妇女老妇一二三区| 国产麻豆精品人妻av| 熟女人妻一区二区精品视频| 天天操天天弄天天射| 国产成人精品av网站| 国产视频一区二区午夜| 日本少妇精品免费视频| 97人妻色免费视频| 国产视频在线视频播放| 天堂资源网av中文字幕| 99热久久这里只有精品| 国产日韩欧美视频在线导航| 欧美黄片精彩在线免费观看| 亚洲 欧美 精品 激情 偷拍| 4个黑人操素人视频网站精品91| 91成人精品亚洲国产| 国产一区二区久久久裸臀| 传媒在线播放国产精品一区| 激情综合治理六月婷婷| 18禁精品网站久久| 国产午夜男女爽爽爽爽爽视频| 亚洲一级特黄特黄黄色录像片| 中文 成人 在线 视频| 不卡日韩av在线观看| 天天日天天鲁天天操| 啪啪啪啪啪啪啪啪啪啪黄色| 欲乱人妻少妇在线视频裸| 日韩精品中文字幕福利| av天堂加勒比在线| 中文字幕高清在线免费播放| 国产精品久久久黄网站| 青青草国内在线视频精选| 成人福利视频免费在线| 性感美女福利视频网站| 玖玖一区二区在线观看| 亚洲日产av一区二区在线| 蜜桃视频在线欧美一区| 福利午夜视频在线合集| 国产午夜亚洲精品不卡在线观看| 亚洲第一伊人天堂网| 99久久激情婷婷综合五月天| 无套猛戳丰满少妇人妻| 中文字幕在线一区精品| 100%美女蜜桃视频| 91国产在线视频免费观看| 青青青青青青青青青青草青青| 在线国产中文字幕视频| av网站色偷偷婷婷网男人的天堂| 一区二区三区久久中文字幕| 97人妻总资源视频| 久久久精品国产亚洲AV一| 97黄网站在线观看| eeuss鲁片一区二区三区| av手机免费在线观看高潮| 中国黄色av一级片| 午夜福利资源综合激情午夜福利资| 特级无码毛片免费视频播放| 午夜久久久久久久精品熟女| 天天日夜夜操天天摸| 欧美在线精品一区二区三区视频| 777奇米久久精品一区| 最新的中文字幕 亚洲| 亚洲欧美激情国产综合久久久| 欧美另类一区二区视频| 国产一区av澳门在线观看| 93精品视频在线观看| 一区二区视频在线观看免费观看 | 婷婷色国产黑丝少妇勾搭AV| 美女少妇亚洲精选av| 国产麻豆乱子伦午夜视频观看| 欧美日本在线观看一区二区| 日本丰满熟妇大屁股久久| 粉嫩欧美美人妻小视频| 国产三级片久久久久久久| 91国内精品自线在拍白富美| 国产亚洲精品欧洲在线观看| 社区自拍揄拍尻屁你懂的| 丝袜长腿第一页在线| 国产欧美精品一区二区高清| 国产美女午夜福利久久| 在线播放一区二区三区Av无码| 特黄老太婆aa毛毛片| 人妻少妇精品久久久久久| 国产熟妇乱妇熟色T区| 播放日本一区二区三区电影| 免费十精品十国产网站| 午夜激情精品福利视频| 日本18禁久久久久久| 亚洲精品精品国产综合| 国产高清在线在线视频| 人人妻人人爽人人澡人人精品| 男人天堂最新地址av| 欧美 亚洲 另类综合| 亚洲欧美日韩视频免费观看| 欧美精品欧美极品欧美视频 | 国语对白xxxx乱大交| 日韩精品中文字幕福利| 中文字幕在线永久免费播放| 在线观看av观看av| 久草视频首页在线观看| 久久久久久久精品成人热| 99国内小视频在现欢看| 最新欧美一二三视频| 国产免费高清视频视频| 日本韩国免费一区二区三区视频 | heyzo蜜桃熟女人妻| 美女大bxxxx内射| 中文字幕人妻三级在线观看| 一个人免费在线观看ww视频| 欧美一级片免费在线成人观看| 中文字母永久播放1区2区3区 | 最新97国产在线视频| 亚洲Av无码国产综合色区| 老鸭窝日韩精品视频观看| 美女视频福利免费看| 日韩欧美国产一区不卡| 国产高清女主播在线| 国产美女午夜福利久久| av男人天堂狠狠干| 91av精品视频在线| 日本少妇精品免费视频| 91成人精品亚洲国产| 午夜精品一区二区三区福利视频| 日韩二区视频一线天婷婷五| 久草免费人妻视频在线| 国产成人精品福利短视频| 久久丁香婷婷六月天| 国产成人无码精品久久久电影| 黄色无码鸡吧操逼视频| 亚洲av香蕉一区区二区三区犇| 国产真实灌醉下药美女av福利| 欧洲精品第一页欧洲精品亚洲 | 欧美视频不卡一区四区| 亚洲精品亚洲人成在线导航| 天天操天天干天天日狠狠插| 欧美日韩情色在线观看| 亚洲一区二区久久久人妻| mm131美女午夜爽爽爽| 最新91九色国产在线观看| 亚洲另类综合一区小说| 亚洲高清视频在线不卡| 午夜精彩视频免费一区| 清纯美女在线观看国产| 精品首页在线观看视频| 午夜频道成人在线91| 亚洲av人人澡人人爽人人爱| 日韩精品二区一区久久| 国产精彩福利精品视频| av乱码一区二区三区| 亚洲国产免费av一区二区三区| 国内精品在线播放第一页| 日韩亚洲高清在线观看| 国产亚洲天堂天天一区| 人妻丝袜精品中文字幕| 538精品在线观看视频| 91福利在线视频免费观看| 天堂av在线最新版在线| 久久精品国产23696| 国产使劲操在线播放| 亚洲精品亚洲人成在线导航| 亚洲欧洲一区二区在线观看| 亚洲av自拍偷拍综合| 91快播视频在线观看| 欧美日韩亚洲国产无线码| 欧美精品中文字幕久久二区| 国产av自拍偷拍盛宴| 国产精品3p和黑人大战| 99热久久这里只有精品8| av高潮迭起在线观看| 日本xx片在线观看| 蜜臀成人av在线播放| 无套猛戳丰满少妇人妻| 欧美偷拍亚洲一区二区| 97欧洲一区二区精品免费| 亚洲超碰97人人做人人爱| 亚洲伊人av天堂有码在线| 成人国产小视频在线观看| 欧美一区二区三区啪啪同性| 天天艹天天干天天操| 夫妻在线观看视频91| 最后99天全集在线观看| 国语对白xxxx乱大交| 亚洲熟女女同志女同| 青青伊人一精品视频| 亚洲av第国产精品| 天天干天天日天天谢综合156| 久精品人妻一区二区三区| 久久久精品精品视频视频| 经典av尤物一区二区| 91香蕉成人app下载| 亚洲精品亚洲人成在线导航| 久久丁香花五月天色婷婷| 国产精品sm调教视频| 亚洲推理片免费看网站| 97瑟瑟超碰在线香蕉| 亚洲av无女神免非久久| h国产小视频福利在线观看| 大胆亚洲av日韩av| 熟妇一区二区三区高清版| 国产精品sm调教视频| 少妇一区二区三区久久久| 狠狠的往里顶撞h百合| 精品国产在线手机在线| 黑人3p华裔熟女普通话| 久久一区二区三区人妻欧美 | 少妇人妻真实精品视频| 日韩在线视频观看有码在线| 日日夜夜狠狠干视频| 激情五月婷婷综合色啪| 爆乳骚货内射骚货内射在线| 真实国产乱子伦一区二区| 狠狠躁夜夜躁人人爽天天天天97| 中出中文字幕在线观看| 91在线视频在线精品3| 最新国产精品拍在线观看| 91精品国产91久久自产久强| 大香蕉大香蕉大香蕉大香蕉大香蕉| 国产精品一区二区av国| 福利视频广场一区二区| 专门看国产熟妇的网站| 人妻无码色噜噜狠狠狠狠色| 亚洲中文精品人人免费| 国产又粗又硬又大视频| 久草视频在线一区二区三区资源站 | 亚洲图片偷拍自拍区| 国内精品在线播放第一页| 成人免费公开视频无毒| 亚洲Av无码国产综合色区| av老司机亚洲一区二区| 在线观看欧美黄片一区二区三区| 日本人妻欲求不满中文字幕| 欧亚日韩一区二区三区观看视频| 天天干天天搞天天摸| 宅男噜噜噜666免费观看| 一区二区三区日本伦理| 日本午夜爽爽爽爽爽视频在线观看| 亚洲国产最大av综合| 国产内射中出在线观看| 丰满的子国产在线观看| 看一级特黄a大片日本片黑人| 丰满的继坶3中文在线观看| 人人在线视频一区二区| 亚洲 图片 欧美 图片| 午夜青青草原网在线观看| 国产又大又黄免费观看| 超级碰碰在线视频免费观看| 色爱av一区二区三区| 婷婷综合亚洲爱久久| 精品高跟鞋丝袜一区二区| 久久久久91精品推荐99| 100%美女蜜桃视频| 欧美女同性恋免费a| 亚洲第一伊人天堂网| 亚洲国产精品久久久久久6| 天天色天天爱天天爽| 免费看高清av的网站| 开心 色 六月 婷婷| chinese国产盗摄一区二区| 欧美日韩一级黄片免费观看| 亚洲视频乱码在线观看| 久久综合老鸭窝色综合久久| 日本女大学生的黄色小视频| 日本一区精品视频在线观看| 国产精品久久综合久久| 亚洲高清国产自产av| av完全免费在线观看av| 亚洲美女自偷自拍11页| 亚洲av在线观看尤物| 久久这里有免费精品| 亚洲成人av在线一区二区| 国产九色91在线观看精品| 国产在线观看黄色视频| 亚洲综合乱码一区二区| 老司机免费视频网站在线看| 97人妻夜夜爽二区欧美极品| 18禁免费av网站| 阿v天堂2014 一区亚洲| 青青青青青青青青青青草青青| 免费黄色成人午夜在线网站| 激情伦理欧美日韩中文字幕| 青青青青青青草国产| 免费岛国喷水视频在线观看| 久草视频中文字幕在线观看| 91超碰青青中文字幕| 真实国产乱子伦一区二区| 大鸡巴插入美女黑黑的阴毛| 成年人啪啪视频在线观看| 视频在线免费观看你懂得| 超碰在线观看免费在线观看| 中文字幕在线一区精品| 欧美精品 日韩国产| 日韩精品中文字幕福利| 2021久久免费视频| 国产成人精品福利短视频| 国产性色生活片毛片春晓精品| 国产实拍勾搭女技师av在线| 在线观看一区二区三级| 区一区二区三国产中文字幕| 精品国产乱码一区二区三区乱| 亚洲伊人色一综合网| 91老熟女连续高潮对白| 成人H精品动漫在线无码播放| 欧美黑人性暴力猛交喷水| 最新欧美一二三视频| 家庭女教师中文字幕在线播放| 人妻3p真实偷拍一二区| 久久永久免费精品人妻专区| 中文字幕在线观看极品视频| 成人av久久精品一区二区| 国产亚洲精品欧洲在线观看| 93视频一区二区三区| 大香蕉伊人中文字幕| 亚洲一区二区三区久久受| 欧美韩国日本国产亚洲| 漂亮 人妻被中出中文| 9国产精品久久久久老师 | 色狠狠av线不卡香蕉一区二区| 丝袜亚洲另类欧美变态| 久久精品视频一区二区三区四区| 极品性荡少妇一区二区色欲| 国产之丝袜脚在线一区二区三区| 鸡巴操逼一级黄色气| 国产日韩av一区二区在线| 亚洲午夜电影之麻豆| 日韩在线视频观看有码在线| 超黄超污网站在线观看| 特级欧美插插插插插bbbbb| 亚洲av人人澡人人爽人人爱| heyzo蜜桃熟女人妻| 天天色天天爱天天爽| 视频在线亚洲一区二区| 99re国产在线精品| 最近中文字幕国产在线| 成人免费毛片aaaa| 91免费观看在线网站| 亚洲天堂av最新网址| 青青草亚洲国产精品视频| 国产精品黄片免费在线观看| 亚洲成人激情视频免费观看了| 亚洲欧美国产综合777| 日韩美女搞黄视频免费| 欧美国品一二三产区区别| 自拍 日韩 欧美激情| jul—619中文字幕在线| 宅男噜噜噜666免费观看| 欧美熟妇一区二区三区仙踪林| 亚洲av天堂在线播放| 91亚洲精品干熟女蜜桃频道| 国产亚洲精品品视频在线| 91啪国自产中文字幕在线| 又大又湿又爽又紧A视频| 亚洲最大黄了色网站| 亚洲精品国品乱码久久久久| 日韩近亲视频在线观看| 新97超碰在线观看| 男人插女人视频网站| 老司机福利精品视频在线| 亚洲在线一区二区欧美| 国产精品手机在线看片| 97人人模人人爽人人喊 | 又大又湿又爽又紧A视频| 任我爽精品视频在线播放| 自拍偷拍日韩欧美亚洲| 国产真实乱子伦a视频| 欧美韩国日本国产亚洲| 男女第一次视频在线观看| 97青青青手机在线视频| 天堂中文字幕翔田av| 午夜91一区二区三区| 9色精品视频在线观看| 中文字幕第1页av一天堂网| 日本人妻少妇18—xx| 成人蜜桃美臀九一一区二区三区| 男女第一次视频在线观看| 一区二区三区久久久91| 亚洲 色图 偷拍 欧美| 精产国品久久一二三产区区别| 五月天色婷婷在线观看视频免费| 国产精品自偷自拍啪啪啪| 日辽宁老肥女在线观看视频| 亚洲av琪琪男人的天堂| 亚洲综合一区二区精品久久| 久久人人做人人妻人人玩精品vr| 51国产成人精品视频| 2021最新热播中文字幕| 国产日本精品久久久久久久| 欧美成人小视频在线免费看| 国产精品黄片免费在线观看| 国产午夜无码福利在线看| 成人蜜桃美臀九一一区二区三区| 美女福利视频网址导航| 天天日天天敢天天干| 夜鲁夜鲁狠鲁天天在线| 在线免费观看黄页视频| 成人动漫大肉棒插进去视频| 欧美男同性恋69视频| 青草亚洲视频在线观看| 国产美女一区在线观看| 偷拍自拍视频图片免费| 3D动漫精品啪啪一区二区下载| 国产超码片内射在线| 最新中文字幕免费视频| 亚洲另类综合一区小说| 精品人妻一二三区久久| 日本av高清免费网站| 馒头大胆亚洲一区二区| 91色网站免费在线观看| 亚洲国产在线精品国偷产拍 | 91久久国产成人免费网站| 97资源人妻免费在线视频| 欧美美女人体视频一区| 成人网18免费视频版国产| 久久久久久久99精品| 亚洲国产美女一区二区三区软件 | 久久精品久久精品亚洲人| 欧美日韩亚洲国产无线码| 欧美精品伦理三区四区| 一区二区熟女人妻视频| 欧亚乱色一区二区三区| 青青伊人一精品视频| 97国产精品97久久| 亚洲天堂成人在线观看视频网站| 日本av高清免费网站| 只有精品亚洲视频在线观看| av视屏免费在线播放| 99的爱精品免费视频| 亚洲伊人久久精品影院一美女洗澡 | 99热这里只有国产精品6| 亚洲变态另类色图天堂网| 成人24小时免费视频| 免费大片在线观看视频网站| 欧美日本在线观看一区二区| 日韩a级黄色小视频| 亚洲一级 片内射视正片| 黄色成年网站午夜在线观看| 青青草成人福利电影| 国产精品国产三级国产精东 | 姐姐的朋友2在线观看中文字幕| 社区自拍揄拍尻屁你懂的 | 亚洲成人精品女人久久久| 2022天天干天天操| 欧美男同性恋69视频| 可以在线观看的av中文字幕| 国产a级毛久久久久精品| 91麻豆精品91久久久久同性| 蜜桃精品久久久一区二区| 高清成人av一区三区| 青青青国产片免费观看视频| 国产麻豆精品人妻av| 中国产一级黄片免费视频播放| 成熟丰满熟妇高潮xx×xx| av高潮迭起在线观看| 亚洲国产欧美一区二区丝袜黑人| 狠狠鲁狠狠操天天晚上干干| 综合国产成人在线观看| 亚洲变态另类色图天堂网| 美女福利视频网址导航| 国产高清女主播在线| 97资源人妻免费在线视频| 丰满的继坶3中文在线观看| 国产不卡av在线免费| 绝顶痉挛大潮喷高潮无码| 天天日天天干天天爱| 日本av在线一区二区三区| 亚洲av男人的天堂你懂的| 日韩亚洲高清在线观看| 欧美日韩情色在线观看| 国产伦精品一区二区三区竹菊| 日韩精品中文字幕福利| 日日日日日日日日夜夜夜夜夜夜| 亚洲天堂精品久久久| 99热99re在线播放| 视频啪啪啪免费观看| 一区二区麻豆传媒黄片| 天天躁日日躁狠狠躁躁欧美av| 欧美精品激情在线最新观看视频| 日韩欧美高清免费在线| 国产精品国产三级麻豆| 亚洲va国产va欧美va在线| 少妇与子乱在线观看| 初美沙希中文字幕在线| 初美沙希中文字幕在线| 天天干夜夜操啊啊啊| 桃色视频在线观看一区二区| 亚洲公开视频在线观看| 日韩人妻丝袜中文字幕| 日本av熟女在线视频|