久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

在Vue中使用HOC模式的實現

瀏覽:149日期:2022-12-03 17:23:32

前言

HOC是React常用的一種模式,但HOC只能是在React才能玩嗎?先來看看React官方文檔是怎么介紹HOC的:

高階組件(HOC)是React中用于復用組件邏輯的一種高級技巧。HOC自身不是ReactAPI的一部分,它是一種基于React的組合特性而形成的設計模式。

HOC它是一個模式,是一種思想,并不是只能在React中才能用。所以結合Vue的特性,一樣能在Vue中玩HOC。

HOC

HOC要解決的問題

并不是說哪種技術新穎,就得使用哪一種。得看這種技術能夠解決哪些痛點。

HOC主要解決的是可復用性的問題。在Vue中,這種問題一般是用Mixin解決的。Mixin是一種通過擴展收集功能的方式,它本質上是將一個對象的屬性拷貝到另一個對象上去。

最初React也是使用Mixin的,但是后面發現Mixin在React中并不是一種好的模式,它有以下的缺點:

mixin與組件之間容易導致命名沖突 mixin是侵入式的,改變了原組件,復雜性大大提高。

所以React就慢慢的脫離了mixin,從而推薦使用HOC。并不是mixin不優秀,只是mixin不適合React。

HOC是什么

HOC全稱:high-order component--也就是高階組件。具體而言,高階組件是參數為組件,返回值為新組件的函數。

而在React和Vue中組件就是函數,所以的高階組件其實就是高階函數,也就是返回一個函數的函數。

來看看HOC在React的用法:

function withComponent(WrappedComponent) { return class extends Component { componentDidMount () { console.log(’已經掛載完成’) } render() { return <WrappedComponent {...props} />; } }}

withComponent就是一個高階組件,它有以下特點:

HOC是一個純函數,且不應該修改原組件 HOC不關心傳遞的props是什么,并且WrappedComponent不關心數據來源 HOC接收到的props應該透傳給WrapperComponent

在Vue中使用HOC

怎么樣才能將Vue上使用HOC的模式呢?

我們一般書寫的Vue組件是這樣的:

<template> <div> <p>{{title}}</p> <button @click='changeTitle'></button> </div></template><script>export default { name: ’ChildComponent’, props: [’title’], methods: { changeTitle () { this.$emit(’changeTitle’); } }}</script>

而withComponet函數的功能是在每次掛載完成后都打印一句:已經掛載完成。

既然HOC是替代mixin的,所以我們先用mixin書寫一遍:

export default { mounted () { console.log(’已經掛載完成’) }}

然后導入到ChildComponent中

import withComponent from ’./withComponent’;export default { ... mixins: [’withComponet’],}

對于這個組件,我們在父組件中是這樣調用的

<child-component :title=’title’ @changeTitle=’changeTitle’></child-component><script>import ChildComponent from ’./childComponent.vue’;export default { ... components: {ChildComponent}}</script>

大家有沒有發現,當我們導入一個Vue組件時,其實是導入一個對象。

export default {}

至于說組件是函數,其實是經過處理之后的結果。所以Vue中的高階組件也可以是:接收一個純對象,返回一個純對象。

所以改為HOC模式,是這樣的:

export default function withComponent (WrapperComponent) { return { mounted () { console.log(’已經掛載完成’) }, props: WrappedComponent.props, render (h) { return h(WrapperComponent, {on: this.$listeners,attrs: this.$attrs,props: this.$props }) } }}

注意{on: this.$listeners,attr: this.$attrs, props: this.props}這一句就是透傳props的原理,等價于React中的<WrappedComponent {...props} />;

this.$props是指已經被聲明的props屬性,this.$attrs是指沒被聲明的props屬性。這一定要兩個一起透傳,缺少哪一個,props都不完整。

為了通用性,這里使用了render函數來構建,這是因為template只有在完整版的Vue中才能使用。

這樣似乎還不錯,但是還有一個重要的問題,在Vue組件中是可以使用插槽的。

比如:

<template> <div> <p>{{title}}</p> <button @click='changeTitle'></button> <slot></slot> </div></template>

在父組件中

<child-component :title=’title’ @changeTitle=’changeTitle’>Hello, HOC</child-component>

可以用this.$solts訪問到被插槽分發的內容。每個具名插槽都有其相應的property,例如v-slot:foo中的內容將會在this.$slots.foo中被找到。而default property包括了所有沒有被包含在具名插槽中的節點,或v-slot:default的內容。

所以在使用渲染函數書寫一個組件時,訪問this.$slots最有幫助的。

先將this.$slots轉化為數組,因為渲染函數的第三個參數是子節點,是一個數組

export default function withComponent (WrapperComponent) { return { mounted () { console.log(’已經掛載完成’) }, props: WrappedComponent.props, render (h) { const keys = Object.keys(this.$slots); const slotList = keys.reduce((arr, key) => arr.concat(this.$slots[key]), []); return h(WrapperComponent, {on: this.$listeners,attrs: this.$attrs,props: this.$props }, slotList) } }}

總算是有模有樣了,但這還沒結束,你會發現使不使用具名插槽都一樣,最后都是按默認插槽來處理的。

有點納悶,去看看Vue源碼中是怎么具名插槽的。在src/core/instance/render.js文件中找到了initRender函數,在初始化render函數時

const options = vm.$optionsconst parentVnode = vm.$vnode = options._parentVnode // the placeholder node in parent treeconst renderContext = parentVnode && parentVnode.contextvm.$slots = resolveSlots(options._renderChildren, renderContext)

這一段代碼是Vue解析并處理slot的。將vm.$options._parentVnode賦值為vm.$vnode,也就是$vnode就是父組件的vnode。如果父組件存在,定義renderContext = vm.$vnode.context。renderContext就是父組件要渲染的實例。 然后把renderContext和$options._renderChildren作為參數傳進resolveSlots()函數中。

接下里看看resolveSlots()函數,在src/core/instance/render-helper/resolve-slots.js文件中

export function resolveSlots ( children: ?Array<VNode>, context: ?Component): { [key: string]: Array<VNode> } { if (!children || !children.length) { return {} } const slots = {} for (let i = 0, l = children.length; i < l; i++) { const child = children[i] const data = child.data // remove slot attribute if the node is resolved as a Vue slot node if (data && data.attrs && data.attrs.slot) { delete data.attrs.slot } // named slots should only be respected if the vnode was rendered in the // same context. if ((child.context === context || child.fnContext === context) && data && data.slot != null ) { const name = data.slot const slot = (slots[name] || (slots[name] = [])) if (child.tag === ’template’) { slot.push.apply(slot, child.children || []) } else { slot.push(child) } } else { (slots.default || (slots.default = [])).push(child) } } // ignore slots that contains only whitespace for (const name in slots) { if (slots[name].every(isWhitespace)) { delete slots[name] } } return slots}

重點來看里面的一段if語句

// named slots should only be respected if the vnode was rendered in the// same context.if ((child.context === context || child.fnContext === context) && data && data.slot != null) { const name = data.slot const slot = (slots[name] || (slots[name] = [])) if (child.tag === ’template’) { slot.push.apply(slot, child.children || []) } else { slot.push(child) }} else { (slots.default || (slots.default = [])).push(child)}

只有當if ((child.context === context || child.fnContext === context) && data && data.slot != null ) 為真時,才處理為具名插槽,否則不管具名不具名,都當成默認插槽處理

else { (slots.default || (slots.default = [])).push(child)}

那為什么HOC上的if條件是不成立的呢?

這是因為由于HOC的介入,在原本的父組件與子組件之間插入了一個組件--也就是HOC,這導致了子組件中訪問的this.$vode已經不是原本的父組件的vnode了,而是HOC中的vnode,所以這時的this.$vnode.context引用的是高階組件,但是我們卻將slot透傳了,slot中的VNode的context引用的還是原來的父組件實例,所以就導致不成立。

從而都被處理為默認插槽。

解決方法也很簡單,只需手動的將slot中的vnode的context指向為HOC實例即可。注意當前實例 _self 屬性訪問當前實例本身,而不是直接使用 this,因為 this 是一個代理對象。

export default function withComponent (WrapperComponent) { return { mounted () { console.log(’已經掛載完成’) }, props: WrappedComponent.props, render (h) { const keys = Object.keys(this.$slots); const slotList = keys.reduce((arr, key) => arr.concat(this.$slots[key]), []).map(vnode => {vnode.context = this._selfreturn vnode }); return h(WrapperComponent, {on: this.$listeners,attrs: this.$attrs,props: this.$props }, slotList) } }}

而且scopeSlot與slot的處理方式是不同的,所以將scopeSlot一起透傳

export default function withComponent (WrapperComponent) { return { mounted () { console.log(’已經掛載完成’) }, props: WrappedComponent.props, render (h) { const keys = Object.keys(this.$slots); const slotList = keys.reduce((arr, key) => arr.concat(this.$slots[key]), []).map(vnode => {vnode.context = this._selfreturn vnode }); return h(WrapperComponent, {on: this.$listeners,attrs: this.$attrs,props: this.$props,scopedSlots: this.$scopedSlots }, slotList) } }}

這樣就行了。

結尾

更多文章請移步樓主github,如果喜歡請點一下star,對作者也是一種鼓勵。

到此這篇關于在Vue中使用HOC模式的文章就介紹到這了,更多相關Vue使用HOC模式內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 日韩av视屏 | 天堂综合网久久 | 伊人精品在线 | 在线国产一区二区 | 日韩欧美二区 | 亚洲精品一 | 国产精品无码久久久久 | 在线观看你懂的网站 | 午夜成人免费电影 | 日韩精品专区在线影院重磅 | 国产区一区 | 欧美黄色大片网站 | 视频在线一区 | 亚洲免费视频在线观看 | 剑来高清在线观看 | 日韩一区电影 | 国产在线观看av | www.日韩视频 | 成人av片在线观看 | 日韩和的一区二区 | 91在线精品一区二区 | 日韩 国产 在线 | 久久国产精品久久 | 成版人性视频 | 欧美一区二区三区精品免费 | 久久中文在线观看 | 国产亚洲精品久久久久久久 | 精品久久网 | 欧美日韩一区二区三区免费视频 | 97综合色 | 午夜寂寞少妇aaa片毛片 | 日韩高清成人 | 日日夜夜精品免费视频 | 午夜视频网站 | 日韩亚洲一区二区 | 国产一区亚洲 | 国产欧美日韩一区二区三区 | 国产美女av | 99精品一区 | av国产精品 | 色偷偷888欧美精品久久久 | 午夜家庭影院 | 日韩欧美国产一区二区三区 | 一级毛片一级毛片一级毛片 | 日韩精品在线一区 | 国产精品亚洲成人 | 亚洲精品片 | 九色在线视频 | 国产亚洲精品久久久久久豆腐 | 亚洲一区二区视频在线观看 | 亚洲精品二区三区 | 日韩国产精品一区二区 | 欧美日韩国产一区 | 欧美在线a | 九九porny88av | 日干夜干天天干 | 国产中文在线 | 精品1区| 国产高清亚洲 | 国产精品成人一区二区三区夜夜夜 | 久久精品免费观看视频 | 欧美日韩在线精品 | 亚洲成熟少妇视频在线观看 | 国产 日韩 欧美 中文 在线播放 | 亚洲精品视频导航 | 日韩av一区二区在线观看 | 欧美三级在线视频 | 国产99久久精品一区二区永久免费 | 一区二区三区四区国产 | 伊人久操 | www.国产精品.com | 久久精品二区亚洲w码 | 欧美成人一区二区三区片免费 | 天天操网| 日本一级淫片免费看 | 日本一区二区成人 | 午夜精品久久久久久久久久久久久 | 国产精品高潮呻吟久久av黑人 | 日韩视频免费 | 欧洲一区 | 久久久久99 | www.色在线 | 欧美精品一区二区三区视频 | 日韩精品一区二 | 欧美精品一区二区三区在线播放 | 91成人免费看| 综合久久一区 | 91中文字幕在线观看 | 亚洲a视频 | 日韩久久久久久 | 亚洲日韩欧美一区二区在线 | 日夜夜精品视频 | 国产欧美精品区一区二区三区 | 国产精品久久婷婷六月丁香 | 九九视频在线观看视频6 | 久久va | 国产黄色大片网站 | 国产精品毛片一区视频播 | 国产一区二区三区免费视频 | 91亚洲视频| 日本a在线| 亚洲成人一区二区三区 | 国产精品美女久久久久久久久久久 | 日韩在线网 | 久久99精品久久久 | 亚洲天堂一区 | 玖玖在线精品 | 亚洲免费国产视频 | 国产精一区二区 | www.fefe66.com| 国产欧美日韩综合精品 | 国产一级视频在线观看 | 中文字幕视频在线 | 精品视频在线免费观看 | 亚洲欧洲综合av | 999在线观看视频 | 精品在线一区二区 | 九九在线视频 | 九九热在线视频 | 视频一区二区三区中文字幕 | 国产精品一区二区三区四区 | 日韩区 | 日韩视频欧美视频 | 日韩精品在线免费观看 | 日韩精品免费在线观看 | av男人的天堂网 | 污色视频在线观看 | 91免费在线看 | 色爽女人免费 | 国产精品影视 | 亚洲电影在线看 | 91av免费在线| 天天视频成人 | 日韩成人片 | 精品视频一区二区三区 | 自拍视频在线 | 欧美一区二区在线视频 | 激情一区 | 亚洲美女视频在线观看 | 欧美一区免费 | 日韩视频区 | 亚洲看片网站 | 国产真实乱全部视频 | 国产二区精品 | 午夜精品一区二区三区在线 | 日韩高清在线一区 | 美女国产精品 | 国产精品久久久久久久久久10秀 | www.99re| 国产精品国产三级国产aⅴ原创 | 综合久久久久 | 久久精品国产视频 | 99re6在线视频精品免费 | 欧美一区二区三区免费 | 国产野精品久久久久久久不卡 | 日韩欧美成人一区二区三区 | 高清一区二区三区视频 | 日韩欧美在线观看一区二区 | 91精品一区二区三区久久久久 | 国产精品久久久久国产a级 日韩在线二区 | 99热婷婷 | 精品久久一区二区三区 | 欧美一级播放 | 精品国产一区二区三区久久影院 | 国产精久久久久久久妇剪断 | 天天操天天草 | 99精品免费在线 | 天堂国产 | 中国大陆高清aⅴ毛片 | 国产精品中文字幕在线观看 | 日韩av免费在线观看 | 日本视频一区二区三区 | 亚洲精品99| 男女黄网站 | 伊人短视频 | 日本二区视频 | 免费观看一区二区三区毛片软件 | 午夜久久久久 | 美女视频久久 | 新91在线视频 | 国产精品揄拍一区二区久久国内亚洲精 | 日韩6699人妻熟女毛片 | 精品视频一区二区三区 | 日本aa级毛片免费观看 | 99久久夜色精品国产亚洲1000部 | 国产精品一区二区三区四区 | 精品久久久久久久久久久久久久久久久久久 | 久久国产一区二区 | 天天躁日日躁aaaaxxxx | 成人亚洲精品 | 欧美日韩精品久久久 | 高清国产午夜精品久久久久久 | 一区二区三区日韩在线 | av网站免费在线观看 | 狠狠的干| 欧美日韩视频第一页 | 久久精品亚洲精品国产欧美kt∨ | 免费黄色电影在线观看 | 欧美国产在线观看 | 成人国产精品视频 | www.视频在线观看 | 亚洲免费一区 | 日本久久综合 | 欧美黄色片 | 天堂综合网 | 中文字幕在线观看精品视频 | 亚洲精品专区 | 一区二区在线看 | 国产偷国产偷精品高清尤物 | 亚洲视频中文字幕 | 成人涩涩日本国产一区 | 亚洲第一区国产精品 | 中文字幕亚洲一区二区va在线 | 超碰在线人 | 欧美激情视频一区二区三区在线播放 | 天天曰| 国产婷婷综合 | 午夜a级理论片915影院 | 久久天堂| 欧美成人综合 | 国产精品免费观看 | 日韩福利一区 | 亚洲免费在线视频 | 欧美日韩综合一区 | 精品久久久久久久久久久下田 | 精品久久久久久一区二区 | 亚洲黄色免费 | 中文字幕国产区 | 一区二区三区亚洲精品国 | 我要看免费黄色片 | 国产精品一区电影 | 日韩中文字 | 奇米av | 嫩草懂你| 免费看国产片在线观看 | 久久久精品欧美 | 中文字幕在线三区 | 国产一区二区三区精品久久久 | 亚洲一区二区三区免费视频 | 精品国产乱码久久久久久1区2区 | 精品国产成人 | 欧美一区二区三区精品 | 免费中文字幕日韩欧美 | 国产中文在线 | 五月激情综合婷婷 | 欧美精品亚洲 | 日日干日日操 | 精品影视 | 在线欧美视频 | 日韩有码电影 | 欧美日韩不卡 | 国产免费av网站 | 国产一区二区三区久久久 | 国产成人精品综合 | 欧美日韩一区二区视频在线观看 | 日韩中文字幕在线观看 | 青娱乐99| 综合五月 | 亚洲一区二区精品视频 | 欧美日本国产一区 | 狠狠的日 | 青青草av| 后人极品翘臀美女在线播放 | 男人的天堂久久 | 久久久久久国产精品 | 国产日韩中文字幕 | 天天操天天舔天天爽 | 噜噜噜噜噜色 | 日韩综合一区 | av中文字幕在线播放 | 亚洲视频在线一区 | 久久日韩 | 日本一区二区三区四区 | 国产黄色在线免费看 | 欧美激情一区二区三区在线视频 | 国产日韩欧美一区 | 久久亚洲天堂 | 偷拍自拍第一页 | 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 国产精品18久久久久久久久 | 成人欧美一区二区三区黑人孕妇 | 国产一区亚洲二区三区 | 亚洲欧美激情视频 | 夜夜骑天天干 | jizzjizz亚洲中国少妇 | 精品久久久久久久久久久久 | hsck成人网| 粉色午夜视频 | 色视频www在线播放国产人成 | 国产精品亚洲一区二区三区在线 | 日韩毛片在线观看 | 成人福利视频网 | 国产精品久久久久久亚洲调教 | av一二三区 | 亚洲一区| 精品一区二区三区中文字幕 | m豆传媒在线链接观看 | a在线免费 | 成人午夜精品一区二区三区 | 无毒黄网 | 成人午夜免费网站 | 国产一区日韩在线 | 在线观看亚洲一区 | 久久av资源| 中文字幕精品一区久久久久 | 亚洲一区二区三区四区五区中文 | a级在线免费观看 | 视频一区 国产精品 | 亚洲精品综合在线 | 91在线免费看 | 久久久免费 | 成人欧美一区二区三区在线观看 | 午夜影院在线观看版 | 91看片在线观看 | 中文字幕八区 | 成年人黄色免费视频 | 国产综合视频在线观看 | 91免费视频观看 | 国产日韩欧美在线 | 成人亚洲精品久久久久 | 五月激情综合 | 国产美女网站 | 婷婷欧美| 国产精品三级久久久久久电影 | 成人精品三级av在线看 | 精品一区二区三区三区 | 黑人精品xxx一区一二区 | 在线观看av不卡 | 亚洲一区不卡在线 | 亚洲精品乱码久久久久久麻豆不卡 | 国产精品亚洲综合 | 久久一区二区精品 | 久久精品欧美一区二区三区不卡 | 国产综合av | 91久久久久久久久久久 | 影音先锋亚洲资源 | 日韩成人免费电影 | av一级久久| 久久久999国产 | 欧美日韩国产一区二区三区 | 欧美三级在线 | 久久毛片| 日本成人黄色网址 | 国内精品久久精品 | 欧美日韩视频 | 中文字幕在线永久在线视频 | 一区二区不卡 | a级在线免费观看 | 国产亲子乱弄免费视频 | 国产精品1区2区 | 99热精品视| 日韩特级 | 精品国产乱码久久久久久影片 | 日韩久久午夜一级啪啪 | www.av在线 | av中文字幕在线 | 日本久久综合 | 欧美色综合天天久久综合精品 | 国产成人精品免费视频大全最热 | 人人干在线视频 | 精品日韩一区二区 | 中文字幕在线资源 | 中文字幕欧美日韩 | 亚洲九九| 免费久久久 | 天天天干天天天操 | www久| 不卡一区二区三区四区 | 一级片在线观看 | 久久综合九九 | 国产精品久久久久久亚洲调教 | 中文字幕在线视频免费观看 | 国产精品久久久久久久久 | 日韩一区在线播放 | 欧美一级二级三级视频 | 精品久久一区二区三区 | 欧美电影一区二区三区 | 久久99国产精品久久99大师 | 成人观看免费视频 | 91丨九色丨国产 | 91一区二区三区 | 在线中文字幕日韩 | 嫩草影院网站入口 | 午夜免费视频 | 国精产品一区二区三区黑人免费看 | 亚洲精品免费看 | 国产精品色婷婷亚洲综合看 | 国产精品777 | 97成人在线免费视频 | 亚洲高清电影 | 国产毛片视频 | 久久精品色欧美aⅴ一区二区 | 婷婷免费在线观看 | 国产精品一区久久久久 | 中文字幕乱码一区二区三区 | 国产精品欧美一区二区三区不卡 | 黄网站涩免费蜜桃网站 | 亚洲视频中文字幕 | 免费的一级黄色片 | 国产毛片一区二区 | 中文字幕精品一区久久久久 | 91亚洲日本 | 成人免费xxxxxxx| 精品久久久久久国产 | 国产精品久久久久毛片软件 | 欧美成人精品一区二区男人看 | 国产中文字幕在线观看 | 午夜黄色影院 | 中文字幕一区二区三区四区五区 | 久久国产精品99久久久久久老狼 | 国产一区二区免费 | 黄色毛片免费看 | 六月婷婷综合 | 在线日韩欧美 | av大片网 | 国产高清网站 | 亚洲一区二区三区视频 | 久久久久久麻豆 | 在线观看国产小视频 | 亚洲综合视频 | 嫩草影院在线观看91麻豆 | 国产一级大片 | 久久精品中文字幕 | 欧美国产视频 | 久久99国产精品 | 国产亚洲精品精品国产亚洲综合 | 欧美激情亚洲 | 久久激情视频 | 亚洲二区在线 | 日韩成人av在线 | 91精品国产综合久久久久久丝袜 | 国产精品久久久久永久免费观看 | 欧美激情在线精品一区二区三区 | 久久99精品久久久久久久青青日本 | 亚洲欧美日韩在线一区 | 亚洲欧美国产毛片在线 | 国产精品久久久久久亚洲调教 | 色综合中文 | 99日韩 | 久久一区 | 精品综合 | 成年人免费看 | 青青久久| 亚洲综合视频 | 欧美在线观看一区 | 伊人狠狠干 | 亚洲精彩视频 | 久久com| 玖玖国产精品视频 | 亚洲福利一区二区 | 日韩三级在线 | 真人女人一级毛片免费播放 | 作爱视频免费看 | 91爱爱网 | 久久99精品视频 | 综合久久99| 日韩色综合 | 91精品一区二区三区久久久久久 | 日韩福利在线观看 | 久久精品一区 | 亚洲免费网站在线观看 | 欧美视频成人 | 亚洲成人二区 | 日韩一区二区三区av | 91国内| 精品国产一级片 | 久久9热 | 欧美日本一区 | 国产一区 | 日韩av一区二区三区在线观看 | 精品视频在线免费 | 国产成人精品综合 | 国产免费av一区二区三区 | 午夜私人影院在线观看 | 日本一区二区三区在线视频 | 国产精品1| 91高清视频在线观看 | 欧日韩不卡在线视频 | 亚洲欧洲日韩在线 | 亚洲一区二区三区精品视频 | 国产77777| 日韩免费视频一区二区 | 欧美日韩在线电影 | 欧美日韩一区精品 | 国产色视频在线观看免费 | 天天综合网久久综合网 | 国产精品三级久久久久久电影 | 中文字幕在线免费视频 | 欧美精品一区二区三区中文字幕 | 亚洲视频一区二区在线 | 精品一区二区三区在线观看 | 伊人青青久久 | 狠狠天天 | 欧美一级二级视频 | 簧片av | 欧美成人区 | 欧美日韩精品一区二区三区在线观看 | 精品在线一区二区三区 | 日韩欧美国产一区二区 | 麻豆产精国品免费 | 亚洲第一区国产精品 | 搞黄免费视频 | 欧美xxxx片| 国产精品99久久久久久久vr | 九色91九色porny永久 | 国产日韩一区二区三区 | 欧美久久精品 | 日韩欧美综合 | 91精品中文字幕一区二区三区 | 免费v片 | 中文字幕高清视频 | 中文在线a在线 | 国产成人影视 | 国产精品视频 | 99re在线免费 | 另类五月天 | 一级片av| 欧美视频网站 | 大胆裸体gogo毛片免费看 | 日本一区二区精品 | 久久综合九九 | 亚洲精品一区二区三区蜜桃久 | 日日干夜夜骑 | 国产精品夜间视频香蕉 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 欧洲毛片基地 | 天堂一区二区三区在线 | 97成人在线视频 | 国产 欧美 日韩 一区 | 日韩欧美一区二区视频 | 欧美成人激情视频 | 亚洲成av| 欧美精品在线一区二区 | 亚洲综合色视频在线观看 | 午夜免费观看网站 | 波多野结衣三区 | 成人在线h| 日本久久久久久久久久 | 夜久久| 久久精品国产亚洲精品 | 国产情侣av自拍 | 亚洲视频在线观看 | 成人免费视频网 | 国产精品久久国产精品 | 亚洲电影一区 | 国产午夜精品一区二区三区视频 | 欧美亚洲一 | 国产乱码精品一区二区三 | 成人亚洲视频 | 91精品久久久久久9s密挑 | 91精品久久久久久久久久久 | 日韩国产一区 | 亚洲精品99 | 天堂中文资源在线 | 日本中文字幕电影 | 一区二区三区四区视频 | 国产激情在线观看视频 | 日本网站在线免费观看 | 欧美a在线 | 大象视频成人在线观看 | 成人免费xxx在线观看 | 久久久久九九九九 | 国产成人午夜高潮毛片 | 国产成人精品一区二区三区视频 | a中文在线视频 | heyzo 在线| 免费观看一级特黄欧美大片 | 国产成人精品久久二区二区 | 伊人久久国产 | 国产999精品久久久影片官网 | 一区二区三区国产 | 久久噜噜噜精品国产亚洲综合 | 久久综合久久久 | 中文字幕1区 | 欧美一区永久视频免费观看 | 国产一区二区三区免费 | 蜜桃av网址 | 日本中文字幕一区 | 国产精品亚洲精品久久 | 久久99国产精品久久99果冻传媒 | 精品国产仑片一区二区三区 | 99精品免费 | 日韩一区二区三区av | 国产免费色 | 亚洲不卡视频 | 精品一区二区三区免费视频 | 成人精品视频在线 | 免费的一级视频 | 狠狠视频 | 久久视频免费 | 黄色的视频免费 | 影音先锋国产 | 一级毛片视频播放 | 国产伦精品一区二区三区四区视频 | 精品国产一区二区三区久久影院 | 黄色日本视频 | 久草成人| 国产97人人超碰caoprom | 日韩高清av| 成人av观看| 2020亚洲视频 | 亚洲一级毛片 | 亚洲精片 | 五月婷婷激情 | 久久91视频 | 色免费视频 | 在线国产专区 | 日韩国产欧美一区 | 韩国精品主播一区二区在线观看 | 校园春色av| 国产精品中文字幕在线播放 | 91视频免费观看 | 五月婷婷天| 国偷自产一区二区免费视频 | 国产中文区二幕区2012 |