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

聊聊React開發(fā)的一些坑(一)

開發(fā) 前端
本篇給大家介紹在React開發(fā)過(guò)程中的一些坑,希望對(duì)你有所幫助!

[[404350]]

一、項(xiàng)目生成

  • create-react-app saucxs-web 生成項(xiàng)目
  • cd saucxs-web 進(jìn)入項(xiàng)目
  • yarn start 啟動(dòng)項(xiàng)目

二、項(xiàng)目部署

  • 本地開發(fā) yarn start
  • 線上部署 yarn build

三、參考文檔

  • react 英文文檔[1]
  • create-react-app[2]
  • ant UI庫(kù)的配置參考[3]
  • react-router 英文[4]
  • react-router 中文[5]

四、配置項(xiàng)

1、Ant Design UI庫(kù)引入

  • yarn add antd 安裝UI庫(kù)
  • yarn add babel-plugin-import 實(shí)現(xiàn)按需引入

package.json/babel 中增加如下內(nèi)容:

  1. "plugins": [ 
  2.     [ 
  3.         "import"
  4.         { 
  5.             "libraryName""antd"
  6.             "libraryDirectory""es"
  7.             "style""css" 
  8.         } 
  9.     ] 

組件使用 如下:

  1. import React, { Component } from 'react'
  2. import { Button } from 'antd' 
  3. import 'antd/dist/antd.css' 
  4. class App extends Component { 
  5.   render() { 
  6.     return ( 
  7.         <Button type="primary">松寶寫代碼</Button> 
  8.     ); 
  9.   } 
  10. export default App; 

此時(shí)可以使用UI庫(kù)的默認(rèn)樣式

2、自定義Ant Design UI庫(kù)樣式

  • 安裝 less 和 less-loader
  • 使用命令 yarn run eject 暴露配置文件
  • 在 webpack.config.dev.js 與 webpack.config.prod.js 中做如下修改:

創(chuàng)建 antModifyVars.js 文件

  1. 'use strict'
  2. const modifyVars = { 
  3.   'primary-color''#E26A6A'
  4. module.exports = modifyVars; 

創(chuàng)建 less 相關(guān)變量,參考默認(rèn)sass的配置:

  1. // style files regexes 
  2. const cssRegex = /\.css$/; 
  3. const cssModuleRegex = /\.module\.css$/; 
  4. const sassRegex = /\.(scss|sass)$/; 
  5. const sassModuleRegex = /\.module\.(scss|sass)$/; 
  6. // 增加less部分 
  7. const lessRegex = /\.less/; 
  8. const lessModuleRegex = /\.module\.less$/; 

在 module.rules 的 oneOf 下, 仿照sass追加一下代碼:

  1. // Opt-in support for LESS (using .less extensions). 
  2. // Chains the less-loader with the css-loader and the style-loader 
  3. // to immediately apply all styles to the DOM. 
  4. // By default we support LESS Modules with the 
  5. // extensions .module.scss or .module.sass 
  6.     test: lessRegex, 
  7.     exclude: lessModuleRegex, 
  8.     use: getStyleLoaders({ importLoaders: 2 }, 'less-loader'), 
  9. }, 
  10. // Adds support for CSS Modules, but using SASS 
  11. // using the extension .module.scss or .module.sass 
  12.     test: lessModuleRegex, 
  13.     use: getStyleLoaders( 
  14.     { 
  15.         importLoaders: 2, 
  16.         modules: true
  17.         getLocalIdent: getCSSModuleLocalIdent, 
  18.     }, 
  19.     'less-loader'), 
  20. }, 

在 getStyleLoaders 中,處理 less-loader

  1. // dev下的配置 
  2. if (preProcessor) { 
  3.     let loader = {loader: require.resolve(preProcessor)} 
  4.     if (preProcessor === "less-loader") { 
  5.         loader.options.modifyVars = modifyVars 
  6.         loader.options.javascriptEnabled = true 
  7.     } 
  8.     loaders.push(loader); 
  9. // prod下的配置 
  10. if (preProcessor) { 
  11.     let loader = { 
  12.          loader: require.resolve(preProcessor), 
  13.          options: { 
  14.             sourceMap: shouldUseSourceMap, 
  15.         }, 
  16.     } 
  17.     if (preProcessor === "less-loader") { 
  18.         loader.options.modifyVars = modifyVars 
  19.         loader.options.javascriptEnabled = true 
  20.     } 
  21.     loaders.push(loader); 
  22.   } 

3、ES6 API支持,引入polyfills

增加低版本瀏覽器、IE瀏覽器對(duì)ES6API的支持,IE9,IE9+

方法一,安裝 yarn add react-app-polyfill

  1. // src/index.js中的【第一行】引入對(duì)IE9及更高版本的支持 
  2. import 'react-app-polyfill/ie9'
  3. // 其他支持,如:對(duì)IE11及更高版本的支持 
  4. import 'react-app-polyfill/ie11'

方法二,安裝 yarn add babel-polyfill

  1. // webpack.base.conf.js中引入: 
  2. require("babel-polyfill"
  3. // webpack.base.conf.js中配置: 
  4. entry: { app: ['babel-polyfill''./src/main.js'] } 

4、引入 react-router-dom 路由

  • react-router-dom 依賴 react-router,所以使用npm安裝依賴的時(shí)候,只需要安裝相應(yīng)環(huán)境下的庫(kù)即可,不用再顯式安裝react-router。
  • 由于需要權(quán)限配置,所以增加AuthorizedRoute.js控制權(quán)限

5、配置別名,@ 指向 src 目錄

webpack.base.conf.js 與 webpack.base.conf.js的配置一致,如下:

  1. 定義resolvePath方法,新版中resolve名稱被占用 
  2. function resolvePath (dir) { 
  3.   return path.join(__dirname, '..', dir) 
  4. // resolve.alias中增加別名配置: 
  5. '@': resolvePath('src'

6、引入 axios

在package.json底部增加以下代碼解決跨域問(wèn)題

  1. // 新版本需要借助http-proxy-middleware,在src下創(chuàng)建setupProxy.js,內(nèi)容: 
  2. // 會(huì)自動(dòng)引用,不需要額外的配置 
  3. const proxy = require('http-proxy-middleware'
  4. module.exports = function (app) { 
  5.   app.use( 
  6.     proxy( 
  7.       '/api', { 
  8.         target: 'http://**********'
  9.         changeOrigin: true 
  10.       } 
  11.     ) 
  12.   ) 
  13. // 定義多個(gè)入口: 
  14. module.exports = function (app) { 
  15.   app.use(proxy('/api', { target: 'http://localhost:7001' })); 
  16.   app.use(proxy('/api2', { target: 'http://localhost:7001' })); 

7、樣式處理

使用react-css-modules實(shí)現(xiàn)組件內(nèi)部樣式與外部分離,使用方式:

  1. import React from 'react' 
  2. import CSSModules from 'react-css-modules'
  3. import { Button } from 'antd' 
  4. import styles from './Header.module.scss' 
  5. class Header extends React.Component { 
  6.   render () { 
  7.     return ( 
  8.       <div> 
  9.         <Button type="primary" className="nowrap" styleName="test">松寶寫代碼</Button> 
  10.       </div> 
  11.     ) 
  12.   } 
  13. export default CSSModules(Header, styles) 

 注意:

  • 由于最新版create-react-app已經(jīng)實(shí)現(xiàn)配置,無(wú)需再修改webpack配置文件
  • 上述方法可實(shí)現(xiàn),同時(shí)使用antd樣式、全局樣式、組件私有樣式
  • 特別注意組件私有樣式文件的命名[name].module.scss

8、針對(duì)create-react-app 2.1.1之前的版本,引入 stylus

  • 安裝 stylus 和 stylus-loader
  • 使用命令 yarn run eject 暴露配置文件
  • 在 webpack.config.dev.js 與webpack.config.prod.js 的 module/rules/oneOf 中修改一下代碼:
  1.     test: /\.(css|styl)$/, 
  2.         use: [ 
  3.             require.resolve('style-loader'), 
  4.             { 
  5.                 loader: require.resolve('css-loader'), 
  6.                 options: { 
  7.                   importLoaders: 1, 
  8.                 }, 
  9.             }, 
  10.             { 
  11.                 loader: require.resolve('postcss-loader'), 
  12.                 options: { 
  13.                     // Necessary for external CSS imports to work 
  14.                     // https://github.com/facebookincubator/create-react-app/issues/2677 
  15.                     ident: 'postcss'
  16.                     sourceMap: true
  17.                     plugins: () => [ 
  18.                         require('postcss-flexbugs-fixes'), 
  19.                         autoprefixer({ 
  20.                             browsers: [ 
  21.                             '>1%'
  22.                             'last 4 versions'
  23.                             'Firefox ESR'
  24.                             'not ie < 9', // React doesn't support IE8 anyway 
  25.                         ], 
  26.                         flexbox: 'no-2009'
  27.                     }), 
  28.                 ], 
  29.             }, 
  30.         }, 
  31.         { 
  32.             loader: require.resolve('stylus-loader'), 
  33.             options: { 
  34.                 sourceMap: true
  35.             } 
  36.         }, 
  37.     ], 
  38. }, 

五、開發(fā)過(guò)程中遇到的問(wèn)題

1、warning提示:no-op

參考內(nèi)容[6]

問(wèn)題描述

warning:Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method

名次解釋 no-op

Can only update a mounted or mounting component. This usually means you called setState, replaceState, or forceUpdate on an unmounted component.

也就是不能在卸載的組件中進(jìn)行狀態(tài)更新操作,如異步請(qǐng)求、事件、定時(shí)器等,在componentWillUnmount生命周期中都應(yīng)該進(jìn)行相應(yīng)的取消處理

對(duì)于事件、定時(shí)器,只需要在componentWillUnmount方法中,進(jìn)行取消事件監(jiān)聽或者清除定時(shí)器的操作即可

以下方案均針對(duì)異步操作帶來(lái)的問(wèn)題進(jìn)行處理。

方案一:使用一個(gè)變量[_isMounted]來(lái)控制是否更新狀態(tài)

  1. import React from 'react' 
  2. class newComponent extends React.Component { 
  3.   _isMounted = false 
  4.   componentDidMount() { 
  5.     this._isMounted = true 
  6.     axios 
  7.       .get('https://hn.algolia.com/api/v1/search?query=react'
  8.       .then(result => 
  9.       if (!this._isMounted) return 
  10.         this.setState({ 
  11.           news: result.data.hits, 
  12.         }), 
  13.       ) 
  14.   } 
  15.   componentWillUnmount() { 
  16.     // 取消事件監(jiān)聽、清除定時(shí)器、控制異步請(qǐng)求 
  17.     this._isMounted = false 
  18.   } 
  19.   render() { 
  20.     return ( 
  21.       ... 
  22.     ) 
  23.   } 
  24. export default newComponent 

方案二:比較粗暴的方式,直接更改setState函數(shù)

  1. import React from 'react' 
  2. class newComponent extends React.Component { 
  3.   componentWillUnmount() { 
  4.     // 取消事件監(jiān)聽、清除定時(shí)器、控制異步請(qǐng)求 
  5.     this.setState = () => { 
  6.       return 
  7.     } 
  8.   } 
  9.   render() { 
  10.     return ( 
  11.       ... 
  12.     ) 
  13.   } 
  14. export default newComponent 

方案三,可直接取消接口請(qǐng)求,如axios的CancelToken

2、react-router4.0版本中,不同場(chǎng)景下的路由跳轉(zhuǎn)

參考[7]

方案一,官方推薦,使用withRouter

  1. import React from 'react' 
  2. import { withRouter } from 'react-router-dom' 
  3. class NewComponent extends React.Component { 
  4.   AFunction() { 
  5.     this.props.history.push('/path'
  6.   } 
  7.   render() { 
  8.     return ( 
  9.       ... 
  10.     ) 
  11.   } 
  12. export default withRouter(NewComponent) 

方案二,不推薦,使用context

  1. import React from 'react' 
  2. import PropTypes from 'prop-types' 
  3. import { withRouter } from 'react-router-dom' 
  4. class NewComponent extends React.Component { 
  5.   static contextTypes = { 
  6.     router: PropTypes.object 
  7.   } 
  8.   constructor(props, context) { 
  9.      super(props, context); 
  10.   } 
  11.   AFunction() { 
  12.     this.context.router.history.push('/path'
  13.   } 
  14.   render() { 
  15.     return ( 
  16.       ... 
  17.     ) 
  18.   } 
  19. export default NewComponent 

方案三,使用history

在真實(shí)的業(yè)務(wù)場(chǎng)景中,經(jīng)常需要在非react組件中使用路由跳轉(zhuǎn),如:接口統(tǒng)一處理場(chǎng)景下,用戶登錄失效時(shí),跳轉(zhuǎn)至登錄頁(yè)面。

由于react-router4.0中提供的BrowserRouter組件默認(rèn)創(chuàng)建了history,并且未暴露出來(lái),在非react中使用history會(huì)出現(xiàn)不起作用的情況

因此:可不使用BrowserRouter組件,自行創(chuàng)建一個(gè)history,如下:

•創(chuàng)建history

  1. // src/history.js 一定要放在src的根目錄下 
  2. import createHistory from 'history/createBrowserHistory' 
  3. const history = createHistory() 
  4. export default history 

•配置router

  1. // src/index.js  注意router上的history 
  2. import { Router, Link, Route } from 'react-router-dom' 
  3. import history from './history' 
  4. ReactDOM.render( 
  5.   <Provider store={store}> 
  6.     <Router history={history}> 
  7.       ... 
  8.     </Router> 
  9.   </Provider>, 
  10.   document.getElementById('root'), 

•其他地方使用,如接口統(tǒng)一處理層

  1. import history from '@/history'
  2. export function addProduct(props) { 
  3.   return dispatch => 
  4.     axios.post('xxx', props, config) 
  5.       .then(response => { 
  6.         history.push('/cart'
  7.       }) 

引用鏈接

[1] react 英文文檔: https://reactjs.org/docs/getting-started.html

[2] create-react-app: https://facebook.github.io/create-react-app/docs/getting-started

[3] ant UI庫(kù)的配置參考: https://blog.csdn.net/qwe502763576/article/details/83242823

[4] react-router 英文: https://reacttraining.com/react-router/web/example/basic

[5] react-router 中文: http://router.happyfe.com/web/guides/quick-start

[6] 參考內(nèi)容: https://www.robinwieruch.de/react-warning-cant-call-setstate-on-an-unmounted-component/

[7] 參考: https://github.com/brickspert/blog/issues/3

 

責(zé)任編輯:姜華 來(lái)源: 松寶寫代碼
相關(guān)推薦

2021-06-30 07:19:35

微服務(wù)業(yè)務(wù)MySQL

2021-10-12 23:10:58

UnsafeJavaJDK

2018-07-30 08:41:48

VueReact區(qū)別

2022-08-02 09:55:04

React前端

2021-05-14 09:49:47

React HookReact應(yīng)用

2021-10-26 13:55:53

搞定系統(tǒng)設(shè)計(jì)

2020-08-07 08:04:03

數(shù)據(jù)庫(kù)MySQL技術(shù)

2021-04-16 08:11:24

js前端JavaScript

2015-11-23 10:16:12

2009-07-09 13:16:54

Java Swing開

2018-02-28 16:35:09

開發(fā)職位軟件

2010-11-02 14:11:15

SilverlightWPF微軟開發(fā)

2015-08-27 10:49:43

JavaScript開發(fā)框架

2015-07-28 14:39:02

IOS技巧

2018-02-06 11:10:27

iOS開發(fā)Xcode快捷鍵

2018-03-26 20:00:32

深度學(xué)習(xí)

2022-06-08 08:03:51

React.jsReactJS 庫(kù)

2020-02-06 16:23:00

LinuxWeb前端

2011-06-10 20:02:55

嵌入式開發(fā)

2015-12-01 15:26:36

.net轉(zhuǎn)型面試薪資
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久天天东北熟女毛茸茸| 欧美mv日韩mv亚洲| 欧美主播一区二区三区美女 久久精品人| 青青操免费在线视频| 最新国产精品视频| 欧美日精品一区视频| 在线国产伦理一区| 日本黄色三级视频| 日韩二区三区在线观看| 欧美成人免费一级人片100| 男人添女人荫蒂国产| 欧美极度另类| 亚洲精品乱码久久久久久黑人 | 中文字幕一区二区三区人妻四季| 亚洲女同另类| 亚洲欧美变态国产另类| 超级砰砰砰97免费观看最新一期| 欧美18—19sex性hd| 亚洲色图制服丝袜| 国产一区再线| 国产精品久久久久毛片| 午夜在线精品| 久久久亚洲国产天美传媒修理工| 日韩毛片无码永久免费看| 亚洲国产中文在线| 欧美日韩国产a| 无码人妻h动漫| 国内在线免费视频| 国产精品久久久久久久久快鸭 | 成人国产精品久久久久久亚洲| 日韩免费av片| 综合激情网站| 色青青草原桃花久久综合| 成人无码www在线看免费| 日本一区二区三区电影免费观看| 欧美图片一区二区三区| 国产h视频在线播放| 色操视频在线| 亚洲欧美aⅴ...| 一区二区三区四区欧美| 国产区av在线| 久久久国产午夜精品| 国产青春久久久国产毛片| 国产精品国产三级国产aⅴ| 日本中文字幕一区二区视频 | 久久久久久av无码免费看大片| 在线综合亚洲| 性欧美xxxx视频在线观看| 国产性猛交普通话对白| 欧美精品成人| 欧美丰满少妇xxxx| 国产suv一区二区三区| 99精品全国免费观看视频软件| 一区二区欧美日韩视频| 国产精品久久免费观看| 成人免费av| 一个人www欧美| 手机免费观看av| 91视频综合| 久久精品在线视频| 青草草在线视频| 欧美日韩三级电影在线| 欧美激情高清视频| 国产一级一片免费播放放a| 国产精品99免费看| 久久免费精品日本久久中文字幕| 国产在线视频二区| 亚洲美女色禁图| 欧洲亚洲在线视频| 亚洲 欧美 日韩 在线| 日本不卡一区二区三区高清视频| 国产精品老女人精品视频| 国产九色91回来了| 狠狠色狠狠色综合| 国产精品二区在线观看| 天天干,夜夜操| 国产丝袜在线精品| 亚洲一区二区三区免费观看| bt在线麻豆视频| 午夜欧美大尺度福利影院在线看| www黄色av| 日韩国产一二三区| 精品国产污网站| 最近中文字幕免费视频| 99久久夜色精品国产亚洲96 | 精品动漫一区二区三区在线观看| 艳妇乳肉亭妇荡乳av| 精品国产一级毛片| 久久综合免费视频影院| 国产免费观看av| 麻豆一区二区三| 国产精品二区二区三区| 黄色av网站在线免费观看| 亚洲人被黑人高潮完整版| 国精产品一区一区三区视频| 欧美不卡高清一区二区三区| 欧美一区二区福利在线| 国产又粗又猛又色| 国产精品伦理久久久久久| 欧美精品成人在线| 日韩欧美一级大片| 成人av在线影院| 香蕉久久夜色| 9765激情中文在线| 欧美精品在线观看播放| 亚洲男人在线天堂| 亚洲成人精选| 国产成人精品午夜| 亚洲精品视频91| 国产精品激情偷乱一区二区∴| a级黄色小视频| 亚洲欧洲专区| 精品偷拍各种wc美女嘘嘘| 亚洲狠狠爱一区二区三区| 色综合一区二区三区| 日本一区二区三区四区视频| 欧美色图亚洲激情| 888久久久| 国产97在线视频| 亚洲a视频在线| 国产精品你懂的在线欣赏| 日本欧美视频在线观看| 四虎影视精品永久在线观看| 国产视频久久久久| 国产精品9191| 国内外成人在线| 亚洲视频导航| 日本成人伦理电影| 日韩经典中文字幕| 久久久无码一区二区三区| 久草这里只有精品视频| 亚洲v日韩v欧美v综合| 欧美黑人疯狂性受xxxxx野外| 亚洲成人av中文字幕| 人妻人人澡人人添人人爽| 麻豆成人综合网| 先锋影音网一区| 精品国产欧美日韩一区二区三区| 国产精品情趣视频| 欧美日韩激情美女| 国产二区视频在线| 日韩精品久久久久久久软件91| 伊人精品在线观看| 秋霞av一区二区三区| 97se亚洲国产综合自在线不卡| 99久久久精品视频| 97超碰成人| 欧美激情亚洲精品| 亚洲欧美另类视频| 樱桃视频在线观看一区| 女人扒开双腿让男人捅 | 懂色av中文字幕一区二区三区| 影音欧美亚洲| 最新亚洲国产| 另类视频在线观看| 国产日韩在线观看一区| 亚洲女人小视频在线观看| 日本精品一区在线| 午夜电影亚洲| 国严精品久久久久久亚洲影视| 成年网站在线视频网站| 亚洲国产毛片完整版| 91视频免费网址| 久久久久久亚洲综合影院红桃 | 国产精选第一页| 99久精品国产| 黄色一级二级三级| 国产精品99久久精品| 亚洲在线一区二区| sm捆绑调教国产免费网站在线观看 | 97国产精品免费视频| 午夜成人鲁丝片午夜精品| 狠狠躁夜夜躁人人爽天天天天97| www.av欧美| 捆绑紧缚一区二区三区视频| av电影一区二区三区| 草莓视频一区二区三区| 青青草一区二区| 天堂а√在线资源在线| 日韩欧美色电影| 男人的天堂一区二区| 国产亚洲欧美一区在线观看| 中文字幕精品一区二区三区在线| 国产精品草草| 欧美污视频久久久| 国产高清亚洲| 琪琪亚洲精品午夜在线| 在线观看免费版| 亚洲大尺度美女在线| wwwwww在线观看| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩高清丝袜| 国产不卡视频一区二区三区| 成人一区二区三| 欧美精品国产| 五月天丁香综合久久国产| 蜜桃精品视频| 国产精品精品一区二区三区午夜版 | 久久躁日日躁aaaaxxxx| 亚洲 小说区 图片区 都市| 69成人精品免费视频| 亚洲永久精品在线观看| 亚洲人精品一区| 韩国女同性做爰三级| 国产凹凸在线观看一区二区| 冲田杏梨av在线| 亚洲日本黄色| 中文字幕中文字幕99| 色吊丝一区二区| 波多野结衣成人在线| 成人国产精品| 欧日韩不卡在线视频| 影音先锋在线播放| 中文字幕欧美专区| 蜜桃视频在线入口www| 亚洲成人精品久久| jizz中国女人| 欧美日韩www| 久久亚洲精品石原莉奈| 亚洲超碰精品一区二区| 欧美卡一卡二卡三| 国产精品福利av| 久久久久久久毛片| 久久久久久夜精品精品免费| 日本五十肥熟交尾| 成人免费毛片app| 中文字幕av一区二区三区人妻少妇 | 亚洲国产999| 欧美日韩国产精品成人| 欧美一区免费看| 欧美午夜宅男影院在线观看| 日本三级免费看| 亚洲午夜免费视频| 国产探花在线播放| 一区二区在线免费| 91精品国产闺蜜国产在线闺蜜| 亚洲国产成人在线| 国产日韩精品中文字无码| 国产清纯白嫩初高生在线观看91| 亚洲天堂视频一区| 久久久一区二区| www在线观看免费视频| 久久久久久久久久电影| 欧美图片第一页| 久久精品网站免费观看| 亚洲a级在线观看| 国产曰肥老太婆无遮挡| 欧美在线视频精品| 亚洲欧洲日韩av| av资源在线免费观看| 中文字幕av不卡| 潮喷失禁大喷水aⅴ无码| 中文字幕乱码亚洲精品一区| 日韩黄色中文字幕| 国产精品乱码妇女bbbb| 91制片厂在线| 亚洲精品日韩一| 久久久久久久极品内射| 亚洲成人在线网站| 日韩污视频在线观看| 欧美午夜性色大片在线观看| 久草热在线观看| 91麻豆精品国产无毒不卡在线观看| 国产免费不卡视频| 欧美变态凌虐bdsm| 亚州男人的天堂| 夜夜嗨av色综合久久久综合网| 五月香视频在线观看| 久久视频这里只有精品| 欧美性受ⅹ╳╳╳黑人a性爽| 久久久久久久久久国产精品| 天堂资源在线| 国产精品入口夜色视频大尺度| 国产精品一区免费在线| 激情视频在线观看一区二区三区| 国产影视精品一区二区三区| 伊人久久大香线蕉av一区| 国产综合精品| 国产裸体舞一区二区三区| 精油按摩中文字幕久久| 91亚洲一线产区二线产区| 91啦中文在线观看| 少妇高潮一区二区三区喷水| 依依成人综合视频| 91黑人精品一区二区三区| 欧美丰满少妇xxxxx高潮对白| 亚洲精品一区二区口爆| 亚洲午夜色婷婷在线| 成人影院在线观看| 欧美专区在线播放| **国产精品| 精品在线视频一区二区三区| 日韩久久精品网| 久久综合九色综合88i| 麻豆精品国产传媒mv男同| 中国免费黄色片| 国产精品成人网| 中文字幕日韩一级| 91精品在线观看入口| 日本成人一区| 九九热这里只有精品免费看| 日韩精品一区二区三区| 高清国产一区| 久久国产精品成人免费观看的软件| 免费超爽大片黄| 国产乱淫av一区二区三区 | 日韩欧国产精品一区综合无码| 国产福利久久精品| 成人av国产| 久久久久久久中文| 国产激情偷乱视频一区二区三区| xxxxx在线观看| 亚洲成年人网站在线观看| 97人妻精品一区二区三区动漫| 亚洲一级一级97网| 竹内纱里奈兽皇系列在线观看| 亚洲va男人天堂| 日韩欧美一区二区三区在线视频| 18禁免费观看网站| 国产精品99久久久久久久女警 | 亚洲成a人片综合在线| 亚洲一区二区人妻| 亚洲网站在线观看| 国产传媒av在线| 91香蕉视频在线下载| 久久久久av| 国产精品视频中文字幕| 国产亚洲短视频| 国产精品第5页| 亚洲国产精品久久91精品| 超碰porn在线| 91免费国产网站| 99精品视频在线| 五月婷婷丁香色| 久久综合色天天久久综合图片| 欧美成人小视频| 特黄视频免费观看| 尤物网在线观看| 日韩电影网1区2区| 中文字幕亚洲欧美日韩在线不卡| 免费在线视频观看| 欧美日韩午夜精品| 国产系列在线观看| 欧美孕妇毛茸茸xxxx| 亚洲乱码在线观看| 日韩欧美一二三区| 制服丝袜在线播放| 91色在线视频| 欧美在线二区| 欧美成人精品一区二区综合免费| 亚洲精品中文在线影院| 99热这里只有精品9| 九九热这里只有精品免费看| 一区中文字幕| 成人免费性视频| 91色porny在线视频| 久久久久99精品成人片我成大片| 亚洲美女性生活视频| 亚洲四虎影院| 一本一道久久a久久综合精品 | 蜜臀av午夜一区二区三区| 国产亚洲欧美在线| 一道本在线视频| 久久国产精品免费视频| 日韩区欧美区| 激情综合在线观看| 国产欧美一区二区精品性| 在线免费看91| 欧美丰满少妇xxxx| 性欧美lx╳lx╳| 一道本在线免费视频| 亚洲欧美一区二区不卡| 内射后入在线观看一区| 热99在线视频| 99久久激情| 亚洲天堂美女视频| 欧美三级电影在线看| a级影片在线| 久久99精品国产一区二区三区| 丝袜美腿一区二区三区| 永久av免费网站| 亚洲国产精品人人爽夜夜爽| 美女网站视频一区| 九一免费在线观看| 久久先锋影音av鲁色资源网| 91激情在线观看| 欧美一区二区色| 国产精品久久久久久影院8一贰佰| 天天躁日日躁狠狠躁av麻豆男男| 日本道在线观看一区二区| wwwav在线| 日韩av在线电影观看| 国产凹凸在线观看一区二区| 艳妇乳肉豪妇荡乳av无码福利 | 国产精品23p| 日韩视频永久免费观看| 欧美日韩一本| 国产精品久久久久久久99| 色综合咪咪久久| 牛牛电影国产一区二区|