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

想知道如何寫出漂亮的React組件嗎?

開發 前端
在Walmart Labs的產品開發中,我們進行了大量的Code Review工作,這也保證了我有機會從很多優秀的工程師的代碼中學習他們的代碼風格與樣式。在這篇博文里我會分享出我最欣賞的五種組件模式與代碼片。不過我首先還是要談談為什么我們需要執著于提高代碼的閱讀體驗。

在Walmart Labs的產品開發中,我們進行了大量的Code Review工作,這也保證了我有機會從很多優秀的工程師的代碼中學習他們的代碼風格與樣式。在這篇博文里我會分享出我最欣賞的五種組件模式與代碼片。不過我首先還是要談談為什么我們需要執著于提高代碼的閱讀體驗。就好像你有很多種方式去裝扮一只貓,如果你把你的愛貓裝扮成了如下這樣子:

[[201977]]

 

你或許可以認為蘿卜青菜各有所愛,但是代碼本身是應當保證其可讀性,特別是在一個團隊中,你的代碼是注定要被其他人閱讀的。電腦是不會在意這些的,不管你朝它們扔過去什么,它們都會老老實實的解釋,但是你的隊友們可不會這樣,他們會把丑陋的代碼扔回到你的臉上。而所謂的Pretty Components,應該包含如下的特性:

  • 即使沒有任何注釋的情況下也易于理解
  • 比亂麻般的代碼有更好的性能表現
  • 更易于進行Bug追溯
  • 簡潔明了,一句頂一萬句

[[201978]] 

SFC:Stateless Functional Component

我覺得我們在開發中經常忽略掉的一個模式就是所謂的Stateless Functional Component,不過這是我個人***的React組件優化模式,沒有之一。我喜愛這種模式不僅僅因為它們能夠減少大量的模板代碼,而且因為它們能夠有效地提高組件的性能表現。總而言之,SFC能夠讓你的應用跑的更快,長的更帥。

[[201979]] 

直觀來看,SFC就是指那些僅有一個渲染函數的組件,不過這簡單的改變就可以避免很多的無意義的檢測與內存分配。下面我們來看一個實踐的例子來看下SFC的具體作用,譬如:

 如果我們用正統的React組件的寫法,可以得出如下代碼:

  1. export default class RelatedSearch extends React.Component { 
  2.  
  3.   constructor(props) { 
  4.  
  5.     super(props); 
  6.  
  7.     this._handleClick = this._handleClick.bind(this); 
  8.  
  9.   } 
  10.  
  11.   _handleClick(suggestedUrl, event) { 
  12.  
  13.     event.preventDefault(); 
  14.  
  15.     this.props.onClick(suggestedUrl); 
  16.  
  17.   } 
  18.  
  19.   render() { 
  20.  
  21.     return ( 
  22.  
  23.       <section className="related-search-container"
  24.  
  25.         <h1 className="related-search-title">Related Searches:</h1> 
  26.  
  27.         <Layout x-small={2} small={3} medium={4} padded={true}> 
  28.  
  29.           {this.props.relatedQueries.map((query, index) => 
  30.  
  31.             <Link 
  32.  
  33.               className="related-search-link" 
  34.  
  35.               onClick={(event) => 
  36.  
  37.                 this._handleClick(query.searchQuery, event)} 
  38.  
  39.               key={index}> 
  40.  
  41.               {query.searchText} 
  42.  
  43.             </Link> 
  44.  
  45.           )} 
  46.  
  47.         </Layout> 
  48.  
  49.       </section
  50.  
  51.     ); 
  52.  
  53.   } 
  54.  
  55.  

而使用SFC模式的話,大概可以省下29%的代碼:

  1. const _handleClick(suggestedUrl, onClick, event) => { 
  2.  
  3.   event.preventDefault(); 
  4.  
  5.   onClick(suggestedUrl); 
  6.  
  7. }; 
  8.  
  9. const RelatedSearch = ({ relatedQueries, onClick }) => 
  10.  
  11.   <section className="related-search-container"
  12.  
  13.     <h1 className="related-search-title">Related Searches:</h1> 
  14.  
  15.     <Layout x-small={2} small={3} medium={4} padded={true}> 
  16.  
  17.       {relatedQueries.map((query, index) => 
  18.  
  19.         <Link 
  20.  
  21.           className="related-search-link" 
  22.  
  23.           onClick={(event) => 
  24.  
  25.             _handleClick(query.searchQuery, onClick, event)} 
  26.  
  27.           key={index}> 
  28.  
  29.           {query.searchText} 
  30.  
  31.         </Link> 
  32.  
  33.       )} 
  34.  
  35.     </Layout> 
  36.  
  37.   </section
  38.  
  39. export default RelatedSearch;  

代碼量的減少主要來源兩個方面:

  • 沒有構造函數(5行)
  • 以Arrow Function的方式替代Render語句(4行)

實際上,SFC最迷人的地方不僅僅是其代碼量的減少,還有就是對于可讀性的提高。SFC模式本身就是所謂純組件的一種***實踐范式,而移除了構造函數并且將_handleClick()這個點擊事件回調函數提取出組件外,可以使JSX代碼變得更加純粹。另一個不錯的地方就是SFC以Arrow Function的方式來定義了輸入的Props變量,即以Object Destructring語法來聲明組件所依賴的Props:

  1. const RelatedSearch = ({ relatedQueries, onClick }) => 

這樣不僅能夠使組件的Props更加清晰明確,還能夠避免冗余的this.props表達式,從而使代碼的可讀性更好。

[[201980]] 

***,我還想要強調下雖然我很推崇SFC,不過也不能濫用它。最合適使用SFC的地方就是之前你用純組件的地方。在Walmart Labs中,我們使用Redux來管理應用的狀態,也就意味著我們絕大部分的組件都是純組件,也就給了SFC廣闊的應用空間。一般來說,有以下特征的組件式絕對不適合使用SFC的:

  • 需要自定義整個組件的生命周期管理
  • 需要使用到refs

Conditional Components

JSX本身不支持if表達式,不過我們可以使用邏輯表達式的方式來避免將代碼切分到不同的子模塊中,大概是如下樣子:

  1. render() { 
  2.  
  3.   <div class="search-results-container"
  4.  
  5.     {this.props.isGrid 
  6.  
  7.       ? <SearchResultsGrid /> 
  8.  
  9.       : <SearchResultsList />} 
  10.  
  11.   </div> 
  12.  
  13.  

這種表達式在二選一渲染的時候很有效果,不過對于選擇性渲染一個的情況很不友好,譬如如下的情況:

  1. render() { 
  2.  
  3.   <div class="search-results-list"
  4.  
  5.     {this.props.isSoftSort 
  6.  
  7.       ? <SoftSortBanner /> 
  8.  
  9.       : null 
  10.  
  11.     } 
  12.  
  13.   </div> 
  14.  
  15.  

這樣子確實能起作用,不過看上去感覺怪怪的。我們可以選用另一種更加語義化與友好的方式來實現這個功能,即使用邏輯與表達式然后返回組件:

  1. render() { 
  2.  
  3.   <div class="search-results-list"
  4.  
  5.     {!!this.props.isSoftSort && <SoftSortBanner />} 
  6.  
  7.   </div> 
  8.  
  9.  

不過這一點也是見仁見智,每個人按照自己的喜好來就行了。

Arrow Syntax In React And Redux

ES2015里包含了不少可口的語法糖,我***的就是那個Arrow Notation。這個特性在編寫組件時很有作用:

  1. const SoftSort = ({ hardSortUrl, sortByName, onClick }) => { 
  2.  
  3.   return ( 
  4.  
  5.     <div className="SearchInfoMessage"
  6.  
  7.       Showing results sorted by both Relevance and {sortByName}. 
  8.  
  9.       <Link 
  10.  
  11.         href={`?${hardSortUrl}`} 
  12.  
  13.         onClick={(ev) => onClick(ev, hardSortUrl)}> 
  14.  
  15.         Sort results by {sortByName} only 
  16.  
  17.       </Link> 
  18.  
  19.     </div> 
  20.  
  21.   ); 
  22.  
  23. };  

該函數的功能就是返回JSX對象,我們也可以忽略return語句:

  1. const SoftSort = ({ hardSortUrl, sortByName, onClick }) => 
  2.  
  3.   <div className="SearchInfoMessage"
  4.  
  5.     Showing results sorted by both Relevance and {sortByName}. 
  6.  
  7.     <Link 
  8.  
  9.       href={`?${hardSortUrl}`} 
  10.  
  11.       onClick={(ev) => onClick(ev, hardSortUrl)}> 
  12.  
  13.       Sort results by {sortByName} only 
  14.  
  15.     </Link> 
  16.  
  17.   </div>  

代碼行數又少了不少咯!

[[201981]] 

另一塊我覺得非常適用Arrow Function的地方就是Redux的mapStateToProps函數:

  1. const mapStateToProps = ({isLoading}) => { 
  2.  
  3.   return ({ 
  4.  
  5.     loading: isLoading, 
  6.  
  7.   }); 
  8.  
  9. };  

需要注意的是,如果你返回的是Object,你需要包裹在大括號內:

  1. const mapStateToProps = ({isLoading}) => ({ 
  2.  
  3.   loading: isLoading 
  4.  
  5. });  

使用Arrow Function優化的核心點在于其能夠通過專注于函數的重要部分而提升代碼的整體可讀性,并且避免過多的模板代碼帶來的噪音。

合理使用Object Destructing與Spread Attributes

大的組件往往受困于this.props過長的窘境,典型的如下所示:

  1. render() { 
  2.  
  3.   return ( 
  4.  
  5.     <ProductPrice 
  6.  
  7.       hidePriceFulfillmentDisplay= 
  8.  
  9.        {this.props.hidePriceFulfillmentDisplay} 
  10.  
  11.       primaryOffer={this.props.primaryOffer} 
  12.  
  13.       productType={this.props.productType} 
  14.  
  15.       productPageUrl={this.props.productPageUrl} 
  16.  
  17.       inventory={this.props.inventory} 
  18.  
  19.       submapType={this.props.submapType} 
  20.  
  21.       ppu={this.props.ppu} 
  22.  
  23.       isLoggedIn={this.props.isLoggedIn} 
  24.  
  25.       gridView={this.props.isGridView} 
  26.  
  27.     /> 
  28.  
  29.   ); 
  30.  
  31.  

這么多的Props估計看著都頭疼,如果我們要將這些Props繼續傳入下一層,大概就要變成下面這個樣子了:

  1. render() { 
  2.  
  3.   const { 
  4.  
  5.     hidePriceFulfillmentDisplay, 
  6.  
  7.     primaryOffer, 
  8.  
  9.     productType, 
  10.  
  11.     productPageUrl, 
  12.  
  13.     inventory, 
  14.  
  15.     submapType, 
  16.  
  17.     ppu, 
  18.  
  19.     isLoggedIn, 
  20.  
  21.     gridView 
  22.  
  23.   } = this.props; 
  24.  
  25.   return ( 
  26.  
  27.     <ProductPrice 
  28.  
  29.       hidePriceFulfillmentDisplay={hidePriceFulfillmentDisplay} 
  30.  
  31.       primaryOffer={primaryOffer} 
  32.  
  33.       productType={productType} 
  34.  
  35.       productPageUrl={productPageUrl} 
  36.  
  37.       inventory={inventory} 
  38.  
  39.       submapType={submapType} 
  40.  
  41.       ppu={ppu} 
  42.  
  43.       isLoggedIn={isLoggedIn} 
  44.  
  45.       gridView={isGridView} 
  46.  
  47.     /> 
  48.  
  49.   ); 
  50.  
  51.  

暫時不考慮unKnown Props,我們可以使用解構賦值來實現這個功能:

  1. render() { 
  2.  
  3.   const props = this.props; 
  4.  
  5.   return <ProductPrice {...props} /> 
  6.  
  7.  

Method Definition Shorthand

***這個方法不一定多有用,不過還是能讓你的代碼變得更加漂亮。如果你希望在Object中添加函數,你可以使用ES2015 Method Definition Shorthand來代替傳統的ES5的表達式,譬如:

如果你想設置一個默認的空方法,也可以利用這種方式:

  1. ProductRating.defaultProps = { 
  2.  
  3.   onStarsClick() {} 
  4.  
  5. };  
責任編輯:龐桂玉 來源: 前端大全
相關推薦

2016-11-25 13:50:15

React組件SFC

2021-12-07 08:16:34

React 前端 組件

2021-12-13 14:37:37

React組件前端

2022-08-09 13:22:26

Hooksreactvue

2022-10-14 08:45:54

2011-05-26 09:39:53

程序

2020-07-15 08:17:16

代碼

2020-05-11 15:23:58

CQRS代碼命令

2017-03-15 13:41:16

數據庫SQL調試

2013-06-07 14:00:23

代碼維護

2021-09-01 08:55:20

JavaScript代碼開發

2021-11-30 10:20:24

JavaScript代碼前端

2015-05-11 10:48:28

代碼干凈的代碼越少越干凈

2022-02-17 10:05:21

CSS代碼前端

2021-01-04 07:57:07

C++工具代碼

2022-02-08 19:33:13

技巧代碼格式

2019-09-20 15:47:24

代碼JavaScript副作用

2020-05-19 15:00:26

Bug代碼語言

2020-12-19 10:45:08

Python代碼開發

2022-03-11 12:14:43

CSS代碼前端
點贊
收藏

51CTO技術棧公眾號

日日夜夜综合网| 亚洲综合20p| 人人干在线视频| 狠狠久久亚洲欧美| 久久久久久久久久国产| 国产福利在线观看视频| 丁香婷婷久久| 亚洲成人资源在线| 五月天久久狠狠| 亚洲成人777777| 久久精品人人| 欧美精品在线免费| 色噜噜日韩精品欧美一区二区| 欧美大片网站| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲资源在线网| 亚洲人成色777777精品音频| 国产一区二区在线影院| 国产91色在线免费| 精品无码一区二区三区电影桃花| 成人精品影视| 精品99久久久久久| 午夜av中文字幕| 国模视频一区| 婷婷开心激情综合| 国产精品一二三在线观看| 九色在线视频蝌蚪| 成人黄色av电影| 成人免费看吃奶视频网站| 久久久精品视频网站 | 久久精品一二三区| 国产成年妇视频| 美国欧美日韩国产在线播放| 45www国产精品网站| 免费在线观看日韩| 小小影院久久| 色av中文字幕一区| 日本少妇xxxxx| 特黄特色欧美大片| 亚洲国产天堂久久国产91| 亚洲一区二区图片| 日韩精品一页| 欧美午夜精品免费| 日本熟妇人妻中出| 日韩福利一区| 欧美午夜宅男影院在线观看| 免费一级特黄特色毛片久久看| av在线网址观看| 亚洲免费观看在线视频| 亚洲一区二区三区涩| xxxxx日韩| 国产偷国产偷精品高清尤物| 久久久久久久有限公司| 天天综合天天综合| 99久久综合99久久综合网站| 国产一区不卡在线观看| 手机亚洲第一页| 91美女福利视频| 欧美日韩最好看的视频| 免费资源在线观看| 久久久久久久综合日本| 欧美一级片免费观看| 久热av在线| 亚洲国产高清aⅴ视频| 亚洲欧美综合一区| 久草资源在线| 亚洲一区二区三区四区在线 | 九色porny视频在线观看| 亚洲成av人综合在线观看| 国产高清av在线播放| 岛国av免费在线观看| 精品久久久久久久久久ntr影视 | 亚洲伊人av| 色婷婷国产精品| 日本美女高潮视频| 91精品亚洲一区在线观看| 51精品秘密在线观看| 在线观看欧美一区二区| 理论片一区二区在线| 亚洲精品在线不卡| 99热这里只有精品4| 国产精品第十页| 91国语精品自产拍在线观看性色| 性无码专区无码| 美女一区二区三区在线观看| 91成人免费在线观看| 亚洲 欧美 激情 小说 另类| 国产欧美一区二区精品秋霞影院| 一区二区视频国产| 国产蜜臀一区二区打屁股调教| 岛国精品视频在线播放| 一区二区成人网| 在线精品自拍| 亚洲网站在线观看| 欧美日韩精品一区二区三区视频播放| 一区二区高清| 成人在线中文字幕| 免费黄色在线视频网站| 亚洲免费三区一区二区| 18岁视频在线观看| 欧美影院在线| 亚洲色图13p| 久久99久久98精品免观看软件| 米奇777在线欧美播放| 91理论片午午论夜理片久久| 亚洲欧美日韩动漫| 一区二区在线观看免费视频播放| 女人另类性混交zo| 91精品尤物| 最近中文字幕日韩精品| 四虎精品永久在线| 高清成人在线观看| 中文字幕一区综合| 三上悠亚国产精品一区二区三区| 日韩精品一区二区三区老鸭窝| 男人舔女人下部高潮全视频| 亚洲日本欧美| 91免费看片网站| 瑟瑟视频在线| 色偷偷一区二区三区| 日本一级大毛片a一| 久久国产中文字幕| 国产91精品最新在线播放| 欧美一区二区在线观看视频| **网站欧美大片在线观看| 无码少妇一区二区三区芒果| 九九热hot精品视频在线播放| 欧美成人自拍视频| 国产精品高潮呻吟AV无码| 久久精品欧美一区二区三区麻豆| 国产一级爱c视频| 日韩综合一区二区三区| 久久精品免费电影| 少妇又紧又色又爽又刺激视频| 91一区二区在线观看| 亚洲精品久久久久久久蜜桃臀| 亚洲一区导航| 日韩中文字幕在线视频| wwwwww在线观看| 久久久久99精品一区| 久久久久久久久久久99| 国产精品18hdxxxⅹ在线| 精品视频9999| 亚洲经典一区二区三区| 亚洲精品日韩专区silk| 青娱乐精品在线| 你懂的成人av| 福利视频久久| 久草在线资源站资源站| 日韩欧美一区中文| 久久国产露脸精品国产| 国产成人亚洲综合a∨婷婷| 欧美日韩午夜爽爽| 在线精品视频一区| 91精品国产亚洲| 青青草在线播放| 在线一区二区三区四区五区| 美女被到爽高潮视频| 免费在线观看视频一区| 影音先锋亚洲视频| 麻豆国产一区| 久久久久久久久电影| 视频一区二区三区在线看免费看| 日韩欧美在线视频日韩欧美在线视频 | 国产精品15p| 热草久综合在线| av电影在线网| 欧美一区二区三区视频| 欧美成人精品激情在线视频| 成人性生交大片免费看视频在线| 欧美a v在线播放| 不卡在线一区二区| 亚洲最大av网| 漫画在线观看av| 一区二区三区视频免费| 国产人妖在线播放| 五月婷婷激情综合| 日韩人妻无码精品综合区| 激情文学综合丁香| 欧美久久久久久久久久久久久| 久草精品在线| 91牛牛免费视频| 偷拍自拍在线看| www.精品av.com| 亚洲 另类 春色 国产| 欧美人狂配大交3d怪物一区| 国产主播在线播放| 中文字幕欧美三区| 好吊操视频这里只有精品| 噜噜爱69成人精品| 国产奶头好大揉着好爽视频| 国产suv精品一区| 国产精品永久免费在线| av中文字幕在线观看第一页 | 七七成人影院| 亚洲人在线视频| www.av黄色| 欧美在线|欧美| 五月天婷婷网站| 欧美高清在线视频| 国产成人精品无码片区在线| 紧缚奴在线一区二区三区| 香港三级韩国三级日本三级| 91欧美在线| 日本在线观看一区| 成人资源在线| 成人综合网网址| 国产韩日精品| 欧美亚州一区二区三区| 日皮视频在线观看| 色妞色视频一区二区三区四区| 少妇无码一区二区三区| 欧美一级一区二区| 做爰无遮挡三级| 都市激情亚洲色图| 久久免费播放视频| 1区2区3区国产精品| 男人舔女人下部高潮全视频| 成人午夜激情片| 亚洲精品mv在线观看| 日韩高清在线一区| 免费无码国产v片在线观看| 国产一区二区三区四区三区四| 伊人久久大香线蕉精品| 欧美手机在线| 日本成人三级| 女厕嘘嘘一区二区在线播放| 国产精品亚洲一区| 51亚洲精品| 91国产丝袜在线放| 91嫩草国产线观看亚洲一区二区| 国产精品吊钟奶在线| 最新欧美色图| 欧美亚洲视频在线看网址| 成人黄色动漫| 性欧美办公室18xxxxhd| 成人ssswww在线播放| 97在线视频免费看| 国产免费拔擦拔擦8x高清在线人| 欧美肥婆姓交大片| 牛牛电影国产一区二区| 欧美极品欧美精品欧美视频 | 91黄色免费观看| 无码视频在线观看| 在线观看不卡视频| 中文字幕免费播放| 欧美日韩一本到| 一级爱爱免费视频| 欧美日韩美少妇| 国产免费高清视频| 欧美草草影院在线视频| 亚洲精品国产suv一区| 精品国产免费视频| 天天操天天爱天天干| 国产视频精品一区二区三区| 四虎影视在线播放| 亚洲新中文字幕| 日本三级视频在线观看| 超碰91人人草人人干| 色www永久免费视频首页在线| 国模精品视频一区二区三区| 91丝袜在线| 日韩免费观看网站| 欧美网站免费| 99热最新在线| 亚洲制服欧美另类| 亚洲一区二区精品在线观看| 最新精品国产| 久久国产亚洲精品无码| 日韩制服丝袜先锋影音| 色天使在线观看| 国产成人三级在线观看| 亚洲人人夜夜澡人人爽| 亚洲国产高清不卡| 免费毛片在线播放免费| 精品电影在线观看| 亚洲天天综合网| 精品少妇一区二区三区在线播放| 四虎精品在线| 久久久精品一区二区三区| av电影院在线看| 国产成人一区二区| 日韩一区二区三区精品视频第3页| 好吊色欧美一区二区三区四区 | 久久亚洲精品小早川怜子| 又嫩又硬又黄又爽的视频| 一区二区三区欧美| 亚洲欧美日韩激情| 日韩免费视频一区二区| 男男电影完整版在线观看| 麻豆乱码国产一区二区三区| 三级在线观看视频| 成人精品久久一区二区三区| 啪啪激情综合网| 性欧美18一19内谢| 性高湖久久久久久久久| 深夜做爰性大片蜜桃| 国产色产综合产在线视频| 99精品久久久久| 欧美性猛交xxxxxx富婆| 黑人精品一区二区| 日韩亚洲欧美中文在线| 欧美特大特白屁股xxxx| 国产精品v欧美精品v日韩| 欧美偷拍自拍| 久在线观看视频| 国产一区二区三区黄视频| 亚洲熟妇无码av| 亚洲午夜三级在线| 在线观看国产黄| 亚洲精品天天看| heyzo高清国产精品| 成人性教育视频在线观看| 香蕉久久99| 97在线国产视频| 国产在线一区观看| 欧美波霸videosex极品| 欧美丝袜一区二区| 东京干手机福利视频| 久久亚洲欧美日韩精品专区| 成人不卡视频| 日韩和欧美的一区二区| 亚洲一区黄色| youjizz.com日本| 夜夜精品浪潮av一区二区三区| 一级黄色小视频| 在线观看欧美www| 欧美电影免费观看高清完整| 精品麻豆av| 亚洲乱亚洲高清| 又黄又爽的网站| 亚洲福利电影网| 欧美特黄一级视频| 欧美精品久久久久久久久| 亚洲天堂av资源在线观看| 强伦女教师2:伦理在线观看| 久久99精品久久久久久久久久久久| 国产精品密蕾丝袜| 日本高清不卡在线观看| 免费在线毛片| 国产成人精品久久| 精品久久精品| 香港日本韩国三级网站| 成人欧美一区二区三区| 97精品人妻一区二区三区香蕉| 三级精品视频久久久久| 欧美视频在线视频精品| 91免费视频黄| 国产69精品久久久久777| 国产亚洲欧美久久久久| 精品国产在天天线2019| 99爱在线视频| 欧美日韩综合久久| 裸体一区二区三区| 日韩三级在线观看视频| 日韩视频一区二区| 超碰在线中文字幕| 久久青青草原| 日本vs亚洲vs韩国一区三区二区| 无码少妇一区二区| 91麻豆精品国产91久久久使用方法| 国产区在线观看| 国产免费一区二区三区| 亚洲在线观看| 国产又粗又黄又猛| 欧美一区二区三区电影| 搞黄网站在线看| 欧美国产视频在线观看| 久久精品999| 国产一级特黄视频| 亚洲美女在线视频| 亚洲精品69| 九九热只有这里有精品| 91蝌蚪国产九色| 97国产精品久久久| 久久久久久久久久亚洲| 国产欧美日韩精品高清二区综合区| 色综合色综合色综合色综合| 一级女性全黄久久生活片免费| 天天干,天天操,天天射| 国产精品视频网站| 国产一区激情| 91激情视频在线观看| 日韩视频免费观看高清完整版在线观看| aaa在线播放视频| 一区二区三区四区国产| 成人av在线网站| 中文字幕一区2区3区| 久久久亚洲国产| 成人网18免费网站| 男男做爰猛烈叫床爽爽小说 | 亚洲一区二区三区精品在线| 国产精品ⅴa有声小说| 99视频免费观看蜜桃视频| 视频一区免费在线观看| 久久久久久av无码免费网站| 亚洲色图五月天| 中文久久电影小说| 天天爽人人爽夜夜爽| 污片在线观看一区二区|