国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

如何設(shè)計(jì)一個(gè)好用的 React Image 組件?

共 7550字,需瀏覽 16分鐘

 ·

2021-10-30 02:18

大廠技術(shù)??高級(jí)前端??Node進(jìn)階

點(diǎn)擊上方?程序員成長(zhǎng)指北,關(guān)注公眾號(hào)

回復(fù)1,加入高級(jí)Node交流群


前言

本文為筆者閱讀 react-image[1] 源碼過程中的總結(jié),若有所錯(cuò)漏煩請(qǐng)指出。? 倉庫傳送門[2]

作者:海秋

https://github.com/worldzhao/blog/issues/1

一把梭,直到 UI 小姐姐來找你談?wù)勅松硐耄?/p>

  1. 圖片加載太慢,需要展示loading占位符;
  2. 圖片加載失敗,加載備選圖片或展示error占位符。

作為開發(fā)者的我們,可能會(huì)經(jīng)歷以下幾個(gè)階段:

  • 第一階段:img標(biāo)簽上使用onLoad以及onError進(jìn)行處理;
  • 第二階段:寫一個(gè)較為通用的組件;
  • 第三階段:抽離 hooks,使用方自定義視圖組件(當(dāng)然也要提供基本組件);

現(xiàn)在讓我們直接從第三階段開始,看看如何使用少量代碼打造一個(gè)易用性、封裝性以及擴(kuò)展性俱佳的image組件。

preview.gif

useImage

首先分析可復(fù)用的邏輯,可以發(fā)現(xiàn)使用者需要關(guān)注三個(gè)狀態(tài):loadingerror以及src,畢竟加載圖片也是異步請(qǐng)求嘛。

對(duì) react-use[3] 熟悉的同學(xué)會(huì)很容易聯(lián)想到useAsync。

自定義一個(gè) hooks,接收?qǐng)D片鏈接作為參數(shù),返回調(diào)用方需要的三個(gè)狀態(tài)。

基礎(chǔ)實(shí)現(xiàn)

import?*?as?React?from?"react";

//?將圖片加載轉(zhuǎn)為promise調(diào)用形式
function?imgPromise(src:?string)?{
??return?new?Promise((resolve,?reject)?=>?{
????const?i?=?new?Image();
????i.onload?=?()?=>?resolve();
????i.onerror?=?reject;
????i.src?=?src;
??});
}

function?useImage({?src?}:?{?src:?string?}):?{
??src:?string?|?undefined,
??isLoading:?boolean,
??error:?any,
}?{
??const?[loading,?setLoading]?=?React.useState(true);
??const?[error,?setError]?=?React.useState(null);
??const?[value,?setValue]?=?(React.useState?undefined?>?undefined);

??React.useEffect(()?=>?{
????imgPromise(src)
??????.then(()?=>?{
????????//?加載成功
????????setLoading(false);
????????setValue(src);
??????})
??????.catch((error)?=>?{
????????//?加載失敗
????????setLoading(false);
????????setError(error);
??????});
??},?[src]);

??return?{?isLoading:?loading,?src:?value,?error:?error?};
}

我們已經(jīng)完成了最基礎(chǔ)的實(shí)現(xiàn),現(xiàn)在來慢慢優(yōu)化。

性能優(yōu)化

對(duì)于同一張圖片來講,在組件 A 加載過的圖片,組件 B 不用再走一遍new Image()的流程,直接返回上一次結(jié)果即可。

+?const?cache:?{
+??[key:?string]:?Promise;
+?}?=?{};

function?useImage({
??src,
}:?{
??src:?string;
}):?{?src:?string?|?undefined;?isLoading:?boolean;?error:?any?}?{
??const?[loading,?setLoading]?=?React.useState(true);
??const?[error,?setError]?=?React.useState(null);
??const?[value,?setValue]?=?React.useState(undefined);

??React.useEffect(()?=>?{
+???if?(!cache[src])?{
+?????cache[src]?=?imgPromise(src);
+???}

-???imgPromise(src)
+???cache[src]
??????.then(()?=>?{
????????setLoading(false);
????????setValue(src);
??????})
??????.catch(error?=>?{
????????setLoading(false);
????????setError(error);
??????});
??},?[src]);

??return?{?isLoading:?loading,?src:?value,?error:?error?};
}

優(yōu)化了一丟丟性能。

支持 srcList

上文提到過一點(diǎn):圖片加載失敗,加載備選圖片或展示error占位符。

展示error占位符我們可以通過error狀態(tài)去控制,但是加載備選圖片的功能還沒有完成。

主要思路如下:

  1. 將入?yún)?code style="margin-right: 2px;margin-left: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;line-height: 1.5;font-size: 90%;padding: 3px 5px;border-radius: 2px;background-color: rgba(255, 229, 100, 0.2) !important;">src改為srcList,值為圖片url或圖片(含備選圖片)的url數(shù)組;
  2. 從第一張開始加載,若失敗則加載第二張,直到某一張成功或全部失敗,流程結(jié)束。類似于 tapable[4]AsyncSeriesBailHook

對(duì)入?yún)⑦M(jìn)行處理:

const?removeBlankArrayElements?=?(a:?string[])?=>?a.filter((x)?=>?x);

const?stringToArray?=?(x:?string?|?string[])?=>?(Array.isArray(x)???x?:?[x]);

function?useImage({?srcList?}:?{?srcList:?string?|?string[]?}):?{
??src:?string?|?undefined,
??loading:?boolean,
??error:?any,
}?{
??//?獲取url數(shù)組
??const?sourceList?=?removeBlankArrayElements(stringToArray(srcList));
??//?獲取用于緩存的鍵名
??const?sourceKey?=?sourceList.join("");
}

接下來就是重要的加載流程啦,定義promiseFind方法,用于完成以上加載圖片的邏輯。

/**
?*?注意?此處將imgPromise作為參數(shù)傳入,而沒有直接使用imgPromise
?*?主要是為了擴(kuò)展性
?*?后面會(huì)將imgPromise方法作為一個(gè)參數(shù)由使用者傳入,使得使用者加載圖片的操作空間更大
?*?當(dāng)然若使用者不傳該參數(shù),就是用默認(rèn)的imgPromise方法
?*/

function?promiseFind(
??sourceList:?string[],
??imgPromise:?(src:?string
)?=>?Promise<void>
):?Promise<string>?
{
??let?done?=?false;
??//?重新使用Promise包一層
??return?new?Promise((resolve,?reject)?=>?{
????const?queueNext?=?(src:?string)?=>?{
??????return?imgPromise(src).then(()?=>?{
????????done?=?true;
????????//?加載成功?resolve
????????resolve(src);
??????});
????};

????const?firstPromise?=?queueNext(sourceList.shift()?||?"");

????//?生成一條promise鏈[隊(duì)列],每一個(gè)promise都跟著catch方法處理當(dāng)前promise的失敗
????//?從而繼續(xù)下一個(gè)promise的處理
????sourceList
??????.reduce((p,?src)?=>?{
????????//?如果加載失敗?繼續(xù)加載
????????return?p.catch(()?=>?{
??????????if?(!done)?return?queueNext(src);
??????????return;
????????});
??????},?firstPromise)
??????//?全都掛了?reject
??????.catch(reject);
??});
}

再來改動(dòng)useImage。

const?cache:?{
-??[key:?string]:?Promise;
+??[key:?string]:?Promise;
}?=?{};

function?useImage({
-??src,
+??srcList,
}:?{
-?src:?string;
+?srcList:?string?|?string[];
}):?{?src:?string?|?undefined;?loading:?boolean;?error:?any?}?{
??const?[loading,?setLoading]?=?React.useState(true);
??const?[error,?setError]?=?React.useState(null);
??const?[value,?setValue]?=?React.useState(undefined);

//?圖片鏈接數(shù)組
+?const?sourceList?=?removeBlankArrayElements(stringToArray(srcList));
//?cache唯一鍵名
+?const?sourceKey?=?sourceList.join('');

??React.useEffect(()?=>?{
-???if?(!cache[src])?{
-?????cache[src]?=?imgPromise(src);
-???}

+???if?(!cache[sourceKey])?{
+?????cache[sourceKey]?=?promiseFind(sourceList,?imgPromise);
+???}

-????cache[src]
-????.then(()?=>?{
+????cache[sourceKey]
+?????.then((src)?=>?{
????????setLoading(false);
????????setValue(src);
??????})
??????.catch(error?=>?{
????????setLoading(false);
????????setError(error);
??????});
??},?[src]);

??return?{?isLoading:?loading,?src:?value,?error:?error?};
}

需要注意的一點(diǎn):現(xiàn)在傳入的圖片鏈接可能不是單個(gè)src,最終設(shè)置的valuepromiseFind找到的src,所以 cache 類型定義也有變化。

react-image-1

自定義 imgPromise

前面提到過,加載圖片過程中,使用方可能會(huì)插入自己的邏輯,所以將 imgPromise 方法作為可選參數(shù)loadImg傳入,若使用者想自定義加載方法,可傳入該參數(shù)。

function?useImage({
+?loadImg?=?imgPromise,
??srcList,
}:?{
+?loadImg?:?(src:?string)?=>?Promise;
??srcList:?string?|?string[];
}):?{?src:?string?|?undefined;?loading:?boolean;?error:?any?}?{
??const?[loading,?setLoading]?=?React.useState(true);
??const?[error,?setError]?=?React.useState(null);
??const?[value,?setValue]?=?React.useState(undefined);

??const?sourceList?=?removeBlankArrayElements(stringToArray(srcList));
??const?sourceKey?=?sourceList.join('');

??React.useEffect(()?=>?{
????if?(!cache[sourceKey])?{
-?????cache[sourceKey]?=?promiseFind(sourceList,?imgPromise);
+?????cache[sourceKey]?=?promiseFind(sourceList,?loadImg);
????}

????cache[sourceKey]
??????.then(src?=>?{
????????setLoading(false);
????????setValue(src);
??????})
??????.catch(error?=>?{
????????setLoading(false);
????????setError(error);
??????});
??},?[sourceKey]);

??return?{?loading:?loading,?src:?value,?error:?error?};
}

實(shí)現(xiàn) Img 組件

完成useImage后,我們就可以基于其實(shí)現(xiàn) Img 組件了。

預(yù)先定義好相關(guān) API:

屬性 說明 類型 默認(rèn)值 src 圖片鏈接 string / string[] - loader 可選,加載過程占位元素 ReactNode null unloader 可選,加載失敗占位元素 ReactNode null loadImg 可選,圖片加載方法,返回一個(gè) Promise (src:string)=>Promise imgPromise 當(dāng)然,除了以上 API,還有標(biāo)簽原生屬性。編寫類型聲明文件如下:

export?type?ImgProps?=?Omit<
??React.DetailedHTMLProps<
????React.ImgHTMLAttributes,
????HTMLImageElement
??>,
??"src"
>?&
??Omit"srcList">?&?{
????src:?useImageParams["srcList"];
????loader?:?JSX.Element?|?null;
????unloader?:?JSX.Element?|?null;
??};

實(shí)現(xiàn)如下:

export?default?({
??src:?srcList,
??loadImg,
??loader?=?null,
??unloader?=?null,
??...imgProps
}:?ImgProps)?=>?{
??const?{?src,?loading,?error?}?=?useImage({
????srcList,
????loadImg,
??});

??if?(src)?return?<img?src={src}?{...imgProps}?/>;
??if?(loading)?return?loader;
??if?(error)?return?unloader;

??return?null;
};

測(cè)試效果如下:

react-image-2

結(jié)語

值得注意的是,本文遵循 react-image 大體思路,但部分內(nèi)容暫未實(shí)現(xiàn)(所以代碼可讀性要好一點(diǎn))。其它特性,如:

  1. 支持 Suspense 形式調(diào)用;
  2. 默認(rèn)在渲染圖片前會(huì)進(jìn)行 decode,避免頁面卡頓或者閃爍。

有興趣的同學(xué)可以看看下面這些文章:

  • 用于數(shù)據(jù)獲取的 Suspense(試驗(yàn)階段)[5]
  • 錯(cuò)誤邊界(Error Boundaries)[6]
  • React:Suspense 的實(shí)現(xiàn)與探討[7]
  • HTMLImageElement.decode()[8]
  • Chrome 圖片解碼與 Image.decode API[9]

參考資料

[1]

react-image: https://github.com/mbrevda/react-image

[2]

? 倉庫傳送門: https://github.com/worldzhao/build-your-own-react-image

[3]

react-use: https://github.com/streamich/react-use

[4]

tapable: https://github.com/webpack/tapable

[5]

用于數(shù)據(jù)獲取的 Suspense(試驗(yàn)階段): https://zh-hans.reactjs.org/docs/concurrent-mode-suspense.html

[6]

錯(cuò)誤邊界(Error Boundaries): https://zh-hans.reactjs.org/docs/error-boundaries.html#introducing-error-boundaries

[7]

React:Suspense 的實(shí)現(xiàn)與探討: https://zhuanlan.zhihu.com/p/34210780

[8]

HTMLImageElement.decode(): https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLImageElement/decode

[9]

Chrome 圖片解碼與 Image.decode API: https://zhuanlan.zhihu.com/p/43991630

Node 社群


我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對(duì)Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。


???“分享、點(diǎn)贊在看” 支持一波??

瀏覽 34
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 天天干天天操综合| 男女国产网站| 色播婷婷五月天| 97人妻精品| 日韩视频免费看| 肏逼免费视频| 久久国产激情| 日韩操b| 黄色视频一区二区| 天天夜夜久久| 国产视频第一页| 怡红院视频| 高清无码在线免费观看| 成人三级片视频| 91视频网站免费| 亚洲美女视频在线观看| A片视频网站| 国产主播精品在线| 免费一区视频| 日韩性爱区| 高清无码免费在线| 牛牛精品视频一区二区| 年轻女教师高潮2| 三级无码电影| 久久久9999| av人人| av影音先锋在线| 91人妻人人爽人人澡人人爽| 成人在线一区二区| 夫妻无码| 日本爱爱免费播放视频| 天天综合天天做天天综合| 欧美性爱在线观看| WWW亚洲视频| 学生妹毛片视频| 亚洲色图在线视频| 婷婷五月电影| 成人A片在线| 妻子互换被高潮了三次| 精品久久久久久久| 91视频在线观看免费大全| 蜜臀av一区二区| 无码超碰| 丁香五月激情啪啪| 天堂在线www| 日韩在线免费| 一区无码精品| 欧美黄色录像| 天堂A片电影网站在线观看| 水蜜桃视频在线播放| 日本操逼片| 成人久久久| 亚洲成人无码高清| 久久久久久久久久8888| 日韩欧美高清| 手机AV在线观看| 777免费视频| 亚洲精品一区二区三区蜜桃| 99热日本| 亚洲无码免费观看视频| 日本亚洲视频| 精品探花| 一本一道vs波多野结衣| 成人理伦A级A片在线论坛 | www.豆花社区成人| 一区二区三区四区在线看| 99热电影| 婷婷五月天中文字幕| 国产V精品| 中文字幕乱码视频| 蜜桃av一区二区三区| 欧美成人毛片| 欧美中文网| 韩国三级av| 午夜激情在线观看| 美国黄色A片| 強姧伦一区二区三区在线播放| 国产激情综合在线| 欧美中出| 黄色视频在线观看大全| 北条麻妃网站| 欧美成人在线免费| 欧美久久网| 五月丁香成人电影| 人妻无码在线视频| 亚洲色一| 在线看黄片| 黄色免费视频网站| 五月天久久久| 国产女人操逼视频| 亚洲区欧美区| 综合五月婷婷| 亚洲色图网站| 99视频精品| 大地影视中文第三页最新在线观看| 日韩免费在线视频| 日本中文字幕在线免费观看| 成人做爰黄A片免费看陈冠| 不卡的AV| 天天干天天射天天操| 亚洲成人无码视频在线观看| 麻豆三级电影| 日日骚av一区二区三区| 大香蕉精品欧美色综合2025 | av色色| 91成人做爰A片| 天天操天天日天天操| 一区二区三区视频免费| 天天天做夜夜夜爽无码| 人人爽人人爱| 日韩av一级| 青春草在线观看国产| 国产欧美日韩综合| 人人免费操| 午夜福利成人| 天天干天天操天天爽| 久久小视频| 精品国产乱码一区二区| 精品人妻一区二区三区阅读全文| 中文字幕第六页| 老鸭窝成人| 日韩小视频在线| 麻豆传媒一区| 91露脸熟女四川熟女在线观看| 欧美成人精品一级| 97成人在线| 成人毛片一区二区三区无码| 成人做爰A片AAA毛真人| 欧美BBWBBWBBWBBWBBwBBW | A片视频在线观看| 特级西西444www大胆高清图片 | 开心色情| 成人免费无码A片免费| 潮喷av| 国产91无码精品秘入口| www.色老板| 国产做受91电影| 亚洲欧美熟妇久久久久久久久| 色婷婷在线无码精品秘人口传媒| 欧美一级操逼视频| 黄片伊人| 国产欧美日韩一区二区三区| 国产高清av| 国产视频一区二区在线观看| 国产成人精品片| 婷婷五月天av| 久久人人操人人| 日本高清色清di免费观看| 精品久久成人| 99久久久精品久久久久久| 久久精品中文字幕| 三级片视频网址| 国内无码精品| 天天草天天射| 开心五月激情网| av天天日| 伊人久久中文字幕| 乱伦小说五月天| 男女拍拍拍| 簧片网站在线观看| 影音先锋黄色资源| 亚洲色情网站| 久久精品中文| 国产乱码精品一品二品| 国产AV无码区亚洲| 大香蕉手机在线视频| 少妇人妻AV| 麻豆电影| 搡BBBB搡BBB搡我瞎了| 不卡日韩| 日韩精品一区二区三区四在线播放 | 国产乱码精品一区二区三区的特点| 欧美一区视频| 亚洲中文无码电影| 综合一区二区| 日本二区三区| 99精品视频网站| 操操小骚逼| 午夜看片| 亚洲午夜免费视频| 91视频在线观看免费大全| 色天使青青草| 人人妻人人操人人| 草草影院第一页YYCCC| 日韩午夜欧美精品一二三区| 俺来也俺也去| 99日韩| 伊人久久香蕉网| www.伊人网| 一本道无码在线| 精品一区二区三区免费毛片| 久久精品视频一区| 在线乱视频| 日国无码| 韩日在线| 一区二区三区精品视频| 亚洲国产成人一区二区| 青青草在线观看免费| 性爱视频免费网站| 国产夫妻在线视频| 美日韩无码视频| 青青热久| 久草黄色电影在线观看| 成人无码区免费AV毛片| 97大香蕉视频| 91国内精品视频| 蝌蚪窝在线视频观看| 全部免费黄色视频| 中文字幕无码AV| 加勒比无码| A片黄色电影网站| 日韩在线网址| 亚洲免费观看高清完整| 丁香激情五月天| 日本特级片| 黑人巨粗进入疼哭A片| 另类老妇极品BBWBBw| 一级a一级a爰片免费免免在线| 深夜福利18| 国产1级a毛a毛1级a毛1级| 西西444WWW无码视频软件| 午夜大香蕉| 99精品视频在线播放免费| 国产精品久久久久久久久久久久久久久 | 欧美性猛交XXXX乱大交| 久久久久久久久久成人永久免费视频| 中文字幕无码播放| 国产黄色视频在线播放| 日韩精品影视| 亚洲草片| 爱福利视频网| 久久久天堂| 欧美成人性爱视频| aaa免费视频| 狠狠躁日日躁夜夜躁2022麻豆| 天天天天操| 久操伊人大香蕉| 无码迷穴| 五月天婷婷视频| 色热热| 久久er99| 老熟女搡BBBB搡BBBB视频| 最新日韩在线| 色77777| 国产成人99久久亚洲综合精品| 无码毛片一区二区三区人口| 69xx视频| 97亚洲视频| 中文字幕精品一级A片| 欧美一级操逼视频| 一区二区三区麻豆| 久久青留社区金玉| 国产精品一麻了麻了| 亚洲第一中文字幕网| 日韩人妻无码一区二区三区中文| 亚洲在线播放| 亚洲黄色精品| 亚洲欧美另类在线| 蜜桃精品在线观看| 免费做爱网站| 草草久久久无码国产专区的优势| 男女日皮的视频| 伊人国产视频| 色诱AV| 狠狠欧美| 国产精品婷婷久久久| 色综合999| 久色天堂| 日韩精品无码电影| 2025中文字幕在线| 午夜福利AV在线| 老师搡BBBB搡BBB| 免费人成视频在线| 国产愉拍91九色国产愉拍| 黄色无码视频在线观看| 免费日比视频| 免费一级AAAAA片在线播放 | 亚洲无码操逼视频| 超碰在线人人干| www.色在线观看| av在线资源网站| 情趣视频网站| 天天色视频| 日韩在线视频免费观看| 五月av| 大香蕉欧美| 亚洲韩国中文字幕| 亚洲免费在线婷婷| 体内射精免费视频| 亚洲俺去了| 国产aaaaaaaaaaaaa| 国产精品一区一区三区| 五月天综合久久| 天天干欧美| 在线男人天堂| 丰满人妻一区二区三区四区54| 福利视频一区二区三区| 伊人色播| 超碰97在线免费观看| 色逼综合| 亚洲日韩Av无码中文字幕美国 | 大香蕉午夜视频| 日韩无码精品一区二区三区| 亚洲精品秘一区二区三小| 女人18片毛片60分钟黃菲菲| 婷婷色亚洲| www.久久99| 日韩性爱在线| 久久久97精品久久| 成人a一级片| 中文无码网站| 99精品在线播放| 精品黄色电影| 成人福利在线| 久久国产日韩| 无码日韩人妻精品久久蜜桃 | 懂色中国闺密偷情懂色AV| 偷偷操av| 日韩xxx视频| 丁香五月综合啪啪| 学生妹一级片内射视频| 四虎成人精品无码永久在线的客服 | 91久久久久久久久18| 麻豆18禁| 夜夜嗨AⅤ一区二区三区| 亚洲一本之道| 国产伊人影院| 中文字幕乱码中文字乱码影响大吗 | 青青青国产在线| 欧美成人看片黄a免费看| AⅤ在线| 国产激情| 日韩黄色视频| 成人午夜A片免费看| 免费国产黄色视频网站| 2019国产精品| 2018最好看的中文字幕高清电影| 久久成人精品| 在线啪| 69福利| 狠狠干在线观看| 在线免费看AV| 日韩欧美综合| 羞羞涩漫无码免费网站入口| P站免费版-永久免费的福利视频平台| 嘿嘿午夜影院| 亚洲色图自拍| 啊啊啊啊啊网站| 99久久九九| 日韩AV免费在线播放| 亚洲三级毛片| 人妻少妇精品视频| 日韩免费成人视频| 成年人黄色网址| 影音先锋人妻资源| 午夜亚洲精品| 水蜜桃91| 亚洲无码免费| 操操片| 国产成人精品在线观看| 人妻HDHDHD96XXXX| 日韩A片无码ⅩXXXX| 老熟女网站| 色欲一区| 操逼爆奶网站| 中文字幕乱码中文字乱码影响大吗 | 99青草| 久草大香蕉在线| 日韩成人网址| 嫩草视频在线播放| 西西人体大胆ww4444多少集| 免费黄色小视频在线观看| 无码黄片免费| 黄片免费无码| 中文字幕在线观看不卡| 亚洲日韩国产AV| 一级一级一级做a免费一级做a| 日日骚中文字幕| 亚洲欧美日韩色图| 蝌蚪窝在线免费观看视频| 中文字幕你懂的| 激情人妻在线| 中文无码日本一级A片人| 成人国产欧美日韩在线视频| 色综合激情| 中文字幕在线观看a| 三个黑人猛躁我一晚上| 久久91人妻无码精品蜜桃HD| 天天干视频在线| 毛片在线看片| 先锋影音资源网站| 狼友视频免费观看| 黄色二区| 大香蕉综合闲人| 九九视频在线观看| 91人妻人人澡人人爽人人DVD| 黄片网站视频| 成人免费视频一区二区三区| 日韩视频免费观看| 91污视频在线观看| 日韩a| 国产在线A片| 日韩人妻精品无码久久边| 亚洲www在线观看| 免费操b视频| 最新国产在线| 91香蕉网站| 99热自拍| 日日舔| www.蜜桃| 国产精品久久久久久无码人妻| 一级操逼黄色视频| 国产精品三| 国产小视频免费在线观看| 玖玖成人电影| 久久久老熟女一区二区三区91| 91爱爱视频| 地表最强网红八月未央道具大秀| 国产黄色三级片| 91色区| 色色色色色欧美网| 精品国产欧美一区二区三区成人 | 操操操综合| 国产在线激情| 成人午夜在线视频| 91国产精品视频在线| 亚洲AV成人无码精品直播在线| 偷拍内射| 久久伊人网站| 欧洲AV在线| 91大长腿美女花外围在线观看| 色情片在线观看| 特级西西| 免费三级网址| 国产视频h| 中文字幕成人| 激情丁香婷婷| 在线黄网站| 欧美A视频| 国产九九九九九九| 天堂资源地址在线| 中文乱伦视频| 日韩精品无码人妻| 九九热精品视频| 天天干在线观看| 俺来也影院| 成人日韩欧美| 91精品丝袜久久久久久| 亚洲秘无码一区二区三区胖子| 国产2页| 欧美熟女一区| 日韩成人无码视频| 亚洲AV成人无码精品| 美女视频黄a视频全免费不卡| 综合在线视频| 国产乱码精品一品二品| 国产又粗又大又爽91嫩草| 欧美在线v| 亚洲无码一区二区三区妃光| 三级片在线视频| 国产成人午夜精品无码区久久麻豆| AA级黄色视频| 国产—a毛—a毛A免费| 亚洲群交视频| 无码中文字幕高清| 大香蕉伊人在线观看视频| 丁香五月天激情网| 综合色国产精品欧美在线| 五月丁香免费视频| 91人人妻人人澡人人爽人人精品| 热逼视频| 美女黄色免费网站| 欧美MV日韩MV国产网站| 国产亚洲AV| 精品探花| 成人精品一区日本无码网站suv/ | 人人操人人插| 日韩成人无码免费视频| 亚洲无码手机在线| 91在线无码| 精品人妻无码一区二区三区四川人| 狼人综合色| 先锋无码| 日韩精品久久久| 在线一区观看| 中文字幕亚洲在线| 中文字幕Av在线| 亚洲无码。| 另类老妇性BBBWBBW| 国产成人av网站| 91丨九色丨老熟女探花| 日韩色导航| 久操视频网| 一本无码视频| 国内精品人妻无码久久久影院蜜桃 | 91精彩视频在线观看| 久久成人18免费网站波多野结衣 | 日本黄色大片| 处破女初破全过免费看| 最新亚洲中文字幕| 亚洲天堂本一| 无码操| 成人欧美精品| 日韩AV成人无码久久电影| h片在线播放| 婷婷九九| AV高清无码在线| 成人国产精品秘欧美高清| 天堂精品| 男女啪啪| 成人午夜| 国产精品探花熟女| 午夜操| 丁香在线视频| 亚洲在线成人视频| 亚洲香蕉国产| 欧美操操操| 无码一区三区| 学生妹毛片视频| 苍井空一区二区三区四区| 91超碰在线| 欧美老逼| 人妻丝袜无码视频专区| 国产在线拍揄自揄拍无码男男| 中国免费视频高清观看| 五月婷婷婷| 超小超嫩国产合集六部| 日韩AV大片| 做aAAAAA免费视频| 91麻豆精品| 欧美毛片A| a免费在线观看| 九色丨蝌蚪丨老版熟女| S牛牛AV| 九九在线视频| 日本a片在线观看| 亚洲肏屄网| 日韩一区二区在线看在线看| 国产欧美精品成人在线观看| 特级西西444www高清| 国产高清无码18| 国产激情一区二区三区| 97人人操人人干| 欧美三级视频| 国产精品一区二区三| 少妇搡BBBB搡BBB搡造水多| 中文字幕第23页| 国模无码在线| 精品蜜桃一区内容| 三级片中文字幕| 欧美成人第一页| AV天堂电影网| 欧美亚洲在线观看| 久草视频免费在线播放| www.99热| 手机看片久久| 亚洲无码专区在线观看| 国产精品高潮呻吟久久| 韩国gogogo高清在线完整版| 91N视频| 国产亚洲视频完整在线观看| 欧美黄色免费看| AV一区二区三区四区| 日韩操屄视频| 久久婷婷五月丁香| 青草成人在线| 欧美午夜乱伦电影| 神马午夜福利视频| 北条麻妃高清无码| 亚洲无码色| 午夜综合网| 日韩激情一区二区| 欧美成人乱码一区二区三区| 亚洲精品一区无码A片丁香花 | 日韩AV免费看| 久久国产片| 91青青草在线| 在线亚洲欧洲| 一级内射片在线网站观看| 久久嫩草精品| 不卡无码中文字幕一区| 午夜天堂| 91探花视频精选在线播放| 欧美精品人妻| 伊人大香蕉综合在线| 国产精品无码免费| 中文字幕第27页| av无码导航| 久久成人综合网| 亚洲无码自拍| 69av在线播放| 91探花国产综合在线精品| 国产精品成人影视| 欧美一级AA大片免费看视频| 骚片网站| 欧美精品久久久久久久久| 日韩无码一卡| 俺来俺去www色婷婷| 欧美性交一区二区| 中文字幕成人在线| 91偷拍网| 久久少妇视频| 国产亲子乱XXXXinin| 国产豆花视频| 久久精品在线播放| 国产精品久久久久久无人区 | 日韩一区二区三| 五月丁香婷婷基地| 免费黄视频在线观看| 亚洲日韩色色| 91久久性奴调教| 日本少妇高清视频| 日本欧美在线观看高清| av无码在线观看| 国产内射在线观看| 丁香婷婷色| 狠狠干2021| 先锋成人AV| 91人妻人人爽人人澡人人爽| 大香蕉网伊人在线| 波多野结衣在线观看一区二区| 五月婷婷五月丁香| 夜夜操天天| 未满十八18禁止免费无码网站| 欧美一区三区视频z| 韩国中文字幕HD久久| 尻屄视频| 免费黄片网站| 亚洲电影在线观看| 久久yzy| 欧美一二区| AV无码免费观看| 亚洲精品无码电影| 99免费观看视频| AV中文在线观看| 日韩av中文字幕在线| 成人无码免费毛片| 91麻豆精品国产91久久久久久| 亚洲69v久久久无码精品| 视频一区二| 成人在线黄片| 亚洲精品黄色电影| 欧美AAAAAAAA| 午夜久久福利| 91人人妻人人妻人人澡| 国产精品对白| 伊人网视频在线播放| 自拍偷拍福利视频网站| 97综合久久| 91麻豆国产福利精品| 88国产精品| 99久久99久久99久久久99国产 | 亚洲精品中文字幕在线| 免费看日P视频| 91欧美黑人| 黄片在线免费观看| 欧美成人精品| AV一区二区三区| H片在线观看| 久久久久国产| 亚洲视频在线免费观看| 外国成人视频| 久久夜色精品噜噜亚洲AV| 强伦轩人妻一区二区三区最新版本更新内容 | 天堂资源在线| 久久一级片| 中文无码在线| 外国成人视频| 麻豆天美传媒AV果冻传媒| 免费成人黄视频| 久久毛片人妻| 欧美激情无码炮击| yy午夜福利| 国产精品一品二区三区的使用体验| 尻屄电影| 91新婚人妻偷拍| AV无码在线观看| 毛片小电影| 欧美日韩视频在线播放| 日韩肏屄视频在线观看| 91人妻人人爽人人澡| 成人做爰69片免费观看| 中文字幕一区二区蜜桃| 国产成人三级视频| 超碰在线大香蕉| 91大铭哥| 精品国产精品三级精品AV网址| 女同一区二区三区| 97黄色| 久久精品国产AV一区二区三区| 男女抽插视频| 色哟哟一区| 丁香婷婷社区| 91在线成人电影| 男女拍拍网站| 国产精品秘久久久久久| sm在线观看| 久操视频网站| 欧美成人网站在线| 日韩啪啪视频| 91精品亚洲| 免费a在线| 国产精品毛片| 在线免费人成视频| 人人草超碰| 18禁成人A∨片| 国产精品香蕉国产| 欧美日韩国产免费观看成人片| av无码精品一区| 91AV在线电影| 日韩精品人妻中文字幕第4区| 懂色av粉嫩av蜜臀av| a网站在线观看| 免费视频a| 久久性视频| 淫荡五月天视频导航| 无码人妻丰满熟妇精品区| 欧美成人一级a片| 女邻居的B好大| 国内精品久久久久久久久久变脸| 精品人妻一区二区三区阅读全文| 日本黄色电影在线| 99视频在线看| 一本道中文字幕| 日逼视频免费观看| 亚洲视频免费观看| 国产性爱一级片| 蜜桃传媒在线| 成人日韩AV| 亚洲无码av在线观看| 黄色电影视频网站| 亚洲综合在线网| 九九九久久久| 爱搞逼综合网| 精品| 大香蕉福利在线| 日韩av无码电影| 久久探花| 婷婷性爱五月天| 欧美三级欧美成人高清| 麻豆免费成人传媒| 蜜桃91精品秘入口| 日本午夜三级视频| 日韩免费性爱视频| 日本黄色免费在线观看| 国产毛片777777| 欧美精品18| 爱爱一区| 黄色视频在线观看免费| 国产精品熟女| 婷婷五月亚洲精品AAA片在| 欧美成人手机在线看片| 午夜AV电影| 色色影院| 国产成人aV| 日韩精品在线免费视频| 亚洲三级自拍| 亚洲无码乱码精品| 蜜臀久久99精品久久久久酒店更新时间| 四川少妇BBBB| 国产一级片在线播放| 日韩黄色大片| 天天天日天天天操| 色丁香在线| 日美女网站| 亚洲无码色| 大香蕉一级片| 亚洲高清在线观看| 欧美黄色操逼| 亚洲免费观看高清完| 台湾精品无码| 日韩人妻精品无码| 免费a网站| 奇米四色秒播| 亚洲AV无码成人精品区h麻豆 | 亚洲一区三区| 男女视频网站| 久久高清免费视频| 欧美日韩国产a| 中文字幕AV在线免费观看| 日韩区一中文字幕a∨| 久久久久黄色| 亚洲日韩中文字幕在线观看| 九九九在线观看视频| 18禁无码网站| 五月婷婷丁香网| 国产A片免费| 91精品人妻一区二区三区蜜桃| 好吊视频一区二区三区红桃视频you| 日韩色爱| 欧洲美一区二区三区亚洲| 国产伊人久久| 亚洲成人黄色| 91探花精品偷拍在线播放| 人人澡人人摸| Japanese在线观看| 国产黄色网页| 女色综合| 在线观看免费视频a| 国产人妖TS重口系列网站观看| 无码在线免费视频| 天a堂8在线www| 国产成人精品亚洲男人的天堂| 亚州无码精品| 男人在线天堂| 精品无码一区二区三| 精品久久免费| 日韩成人免费在线| 国产麻豆性爱视频| 久久精品视频18| 国产欧美高清在线| 东北老女人性爱视频| 在线国产91| 夜夜骑天天操| www伦理片-韩国三级三级三级a三级-成人AV| 亚洲中文无码在线观看| 三级成人在线| 久久久亚洲熟妇熟女| 大香蕉久久久| 午夜福利AV电影| 色骚综合| 日本操逼网站| 一区二区在线不卡| 天堂在线v| 国产熟女| 操逼天堂| 久99在线视频| 操逼毛片视频| 日日干天天射| 亚洲18禁| 人妻熟女88AⅤ| 国产夫妻自拍AV| 午夜成人精品视频| 人妻精品一区二区在线| 天天插天天拍| 天天干天天日天天色| 婷婷综合网| 亚洲无码一区二区三| 操比视频在线观看| 国产精品秘麻豆果冻传媒潘甜甜丶| 性爱精品视频| 久久精品女同亚洲女同13| 99免费在线观看视频| 天天色色| 男人的天堂婷婷| 亚洲v在线观看| 一区二区三区毛片| 牛牛影视一区二区| 日韩免费不卡| 成人日韩欧美| 蜜桃av秘一区二区三区| 亚洲手机在线播放| 毛片小说| 亚洲欧美大香蕉视频网| 亚洲Av秘无码一区二区| 欧美成人免费电影| 乱伦专区| 少妇人妻一级A毛片| 五月天国产| 波多野结衣一区| 国产精品一区二区AV日韩在线| 超碰操| 黄色成人在线| 亚洲色男人天堂| 国产精品第二页| 99热最新网址| 人妻懂色av粉嫩av浪潮av| 日韩成人黄色| 成人黄片网站| 欧美老妇大BBBBXXXX| 嫩BX区二区三区的区别| 五月激情综合网| 亚洲精品乱码在线| 亚洲无码在线视频观看| 91精品人妻一区二区三区蜜桃| 在线观看黄色| Japanese在线观看| 欧美精品一区二区三区成人片在线| AV电影在线免费观看| A视频免费观看| 大香蕉久久久| 在线观看小视频| 人人妻人人妻| 久久夜色视频网| 91在线视频免费| 欧美丰满少妇人妻精品| 青娱乐国产精品| 在线激情网站| 中文字幕在线免费观看视频| 一本大道久久久久| 各国熟女HD合集| 婷婷五月天丁香| 国产18水真多18精品| 亚洲无码精品在线观看| 最近中文字幕在线视频| 黄片日逼视频| 搡BBBB搡BBB搡我瞎了| 免费观看日韩无码视频| 操逼网首页123| 欧美一区二区三区在线|