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

從 React-Router 出發(fā),如何設(shè)計更優(yōu)雅的路由?

共 13024字,需瀏覽 27分鐘

 ·

2021-08-02 16:57


前言

每次開發(fā)新頁面的時候,都免不了要去設(shè)計一個新的 URL,也就是我們的路由。其實路由在設(shè)計的時候不僅僅是一個由幾個簡單詞匯和斜杠分隔符組成的鏈接,偶爾也可以去考慮有沒有更“優(yōu)雅”的設(shè)計方式和技巧。而在這背后,路由和組件之間的協(xié)作關(guān)系是怎樣的呢?于是我以 React 中的 Router 使用方法為例,整理了一些知識點小記和大家分享~

React-Router

基本用法

通常我們使用 React-Router (https://reactrouter.com/native/guides/quick-start) 來實現(xiàn) React 單頁應(yīng)用的路由控制,它通過管理 URL,實現(xiàn)組件的切換,進而呈現(xiàn)頁面的切換效果。

其最基本用法如下:

import { Router, Route } from 'react-router';
render((
  <Router>
    <Route path="/" component={App}/>
  </Router>

), document.getElementById('app'));

亦或是嵌套路由:

在 React-Router V4 版本之前可以直接嵌套,方法如下:

<Router>
  <Route path="/" render={() => <div>外層</div>}>
      <Route path="/in" render={() => <div>內(nèi)層</div>} />
  </Route>

</Router>

上面代碼中,理論上,用戶訪問 /in 時,會先加載 <div>外層</div>,然后在它的內(nèi)部再加載 <div>內(nèi)層</div>。

然而實際運行上述代碼卻發(fā)現(xiàn)它只渲染出了根目錄中的內(nèi)容。后續(xù)對比 React-Router 版本發(fā)現(xiàn),是因為在 V4 版本中變更了其渲染邏輯,原因據(jù)說是為了踐行 React 的組件化理念,不能讓 Route 標簽看起來只是一個標簽(奇怪的知識又增加了)。

現(xiàn)在較新的版本中,可以使用 Render 方法實現(xiàn)嵌套。

<Route
  path="/"
  render={() => (
    <div>
      <Route
        path="/"
        render={() =>
 <div>外層</div>}
      />
      <Route
        path="/in"
        render={() =>
 <div>內(nèi)層</div>}
      />
      <Route
        path="/others"
        render={() =>
 <div>其他</div>}
      />
    </div>

  )}
/>

此時訪問 /in 時,會將“外層”和“內(nèi)層”一起展示出來,類似地,訪問 /others 時,會將“外層”和“其他”一起展示出來。

路由傳參小 Tips

在實際開發(fā)中,往往在頁面切換時需要傳遞一些參數(shù),有些參數(shù)適合放在 Redux 中作為全局數(shù)據(jù),或者通過上下文傳遞,比如業(yè)務(wù)的一些共享數(shù)據(jù),但有些參數(shù)則適合放在 URL 中傳遞,比如頁面類型或詳情頁中單據(jù)的唯一標識 id。在處理 URL 時,除了問號帶參數(shù)的方式,React-Router 能幫我們做什么呢?在這其中,Route 組件的 path 屬性便可用于指定路由的匹配規(guī)則。

場景 1

 

描述:就想讓普普通通的 URL 帶個平平無奇的參數(shù)

那么,接下來我們可以這樣干:

Case A:路由參數(shù)

path="/book/:id"

我們可以用冒號 + 參數(shù)名字的方式,將想要傳遞的參數(shù)添加到 URL 上,此時,當參數(shù)名字(本 Case 中是 id)對應(yīng)的值改變時,將被認為是不同 URL。

Case B:查詢參數(shù)

path="/book"

如果想要在頁面跳轉(zhuǎn)的時候問號帶參數(shù),那么 path 可以直接設(shè)計成既定的樣子,參數(shù)由跳轉(zhuǎn)方拼接。在跳轉(zhuǎn)時,有兩種形式帶上參數(shù)。其一是在 Link 組件的 to 參數(shù)中通過配置字符串并用問號帶參數(shù),其二是 to 參數(shù)可以接受一個對象,其中可以在 search 字段中配置想要傳遞的參數(shù)。

<Link to="/book?id=111" />
// 或者
<Link to={{
  pathname: '/book',
  search: '?id=111',
}}/>

此時,假設(shè)當前頁面 URL 中的 id 由 111 修改為 222 時,該路由對應(yīng)的組件(在上述例子中就是 React-Route 配置時 path="/book" 對應(yīng)的頁面/組件 )會更新,即執(zhí)行 componentDidUpdate 方法,但不會被卸載,也就是說,不會執(zhí)行 componentDidMount 方法。

Case C:查詢參數(shù)隱身式帶法

path="/book"

path 依舊設(shè)計成既定的樣子,而在跳轉(zhuǎn)時,可以通過 Link 中的 state 將參數(shù)傳遞給對應(yīng)路由的頁面。

<Link to={{
  pathname'/book',
  state: { id111 }
}}/>

但一定要注意的是,盡管這種方式下查詢參數(shù)不會明文傳遞了,但此時頁面刷新會導(dǎo)致參數(shù)丟失(存儲在 state 中的通?。琒o,灰常不推薦~~(其實不想明文可以進行加密處理,但一般情況下敏感信息是不建議放在 URL 中傳遞的~)

場景 2

 

描述:編輯/詳情頁,想要共用一個頁面,URL 由不同的參數(shù)區(qū)分,此時我們希望,參數(shù)必須為 edit、detail、add 中的 1 個,不然需要跳轉(zhuǎn)到 404 Not Found 頁面。

path='/book/:pageType(edit|detail|add)'

如果不加括號中的內(nèi)容 (edit|detail|add),當傳入錯誤的參數(shù)(比如用戶誤操作、隨便拼接 URL 的情況),則頁面不會被 404 攔截,而是繼續(xù)走下去開始渲染頁面或調(diào)用接口,但此時很有可能導(dǎo)致接口傳參錯誤或頁面出錯。

場景 3

 

描述:新增頁和編輯頁辣么像,我的新增頁也想和編輯/詳情共用一個頁面。但是新增頁不需要 id,編輯/詳情頁需要 id,使用同一個頁面怎么辦?

path='/book/:pageType(edit|detail|add)/:id?'

別急,可以用 ? 來解決,它意味著 id 不是一個必要參數(shù),可傳可不傳。

場景 4

 

描述:我的 id 只能是數(shù)字,不想要字符串怎么辦?

path='/book/:id(\\\d+)'

此時 id 不是數(shù)字時,會跳轉(zhuǎn) 404,被認為 URL 對應(yīng)的頁面找不到啦。

底層依賴

有了這么多場景,那 Router 是怎樣實現(xiàn)的呢?其實它底層是依賴了 path-to-regexp (https://github.com/pillarjs/path-to-regexp/tree/v1.7.0) 方法。

var pathToRegexp = require('path-to-regexp')
// pathToRegexp(path, keys, options)
// 示例
var keys = []
var re = pathToRegexp('/foo/:bar', keys)
// re = /^\/foo\/([^\/]+?)\/?$/i
// keys = [{ name: 'bar', prefix: '/', delimiter: '/', optional: false, repeat: false, pattern: '[^\\/]+?' }]
 

delimiter:重復(fù)參數(shù)的定界符,默認是 '/',可配置

一些其他常用的路由正則通配符:

  • ? 可選參數(shù)

  • * 匹配 0 次或多次

  • + 匹配 1 次或多次

如果忘記寫參數(shù)名字,而只寫了路由規(guī)則,比如下述代碼中 /:foo 后面的參數(shù):

var re = pathToRegexp('/:foo/(.*)', keys)
// 匹配除“\n”之外的任何字符
// keys = [{ name: 'foo', ... }, { name: 0, ...}]
re.exec('/test/route')
//=> ['/test/route', 'test', 'route']

它也會被正確解析,只不過在方法處理的內(nèi)部,未命名的參數(shù)名會被替換成數(shù)組下標。

取路由參數(shù)

path 帶的參數(shù),可以通過 this.props.match 獲取

例如:

// url 為 /book/:pageType(edit|detail|add)
const { match } = this.props;
const { pageType } = match.params;

由于有 #,# 之后的所有內(nèi)容都會被認為是 hash 的一部分,window.location.search 是取不到問號帶的參數(shù)的。

比如:http://aaa.bbb.com/book-center/#/book/list?id=123

那么在 React-Router 中,問號帶的參數(shù),可以通過 this.props.location (官方墻推 ??)獲取。個人理解是因為 React-Router 幫我們做了處理,通過路由和 hash 值(window.location.hash)做了解析的封裝。

例如:

// url 為 /book?pageType=edit
const { location } = this.props;
const searchParams = location.search; // ?pageType=edit

實際打印 props 參數(shù)發(fā)現(xiàn),this.props.history.location 也可以取到問號參數(shù),但不建議使用,因為 React 的生命周期(componentWillReceiveProps、componentDidUpdate)可能使它變得不可靠。(原因可參考:https://blog.csdn.net/zrq1210/article/details/108403772)

在早期的 React-Router 2.0 版本是可以用 location.query.pageType 來獲取參數(shù)的,但是 V4.0 去掉了(有人認為查詢參數(shù)不是 URL 的一部分,有人認為現(xiàn)在有很多第三方庫,交給開發(fā)者自己去解析會更好,有個對此討論的 Issue,有興趣的可以自行獲取 ?? https://github.com/ReactTraining/react-router/issues/4410)

針對上一節(jié)中場景 1 的 Case C,查詢參數(shù)隱身式帶法時(從 state 里帶過去的),在 this.props.location.state 里可以取到(不推薦不推薦不推薦,刷新會沒~)

Switch

<div>
  <Route
    path="/router/:type"
    render={() =>
 <div>影像</div>}
  />

  <Route
    path="/router/book"
    render={() =>
 <div>圖書</div>}
  />

</div>

如果 <Route /> 是平鋪的(用 div 包裹是因為 Router 下只能有一個元素),輸入 /router/book 則影像和圖書都會被渲染出來,如果想要只精確渲染其中一個,則需要 Switch

<Switch>
  <Route
    path="/router/:type"
    render={() =>
 <div>影像</div>}
  />

  <Route
    path="/router/book"
    render={() =>
 <div>圖書</div>}
  />

</Switch>

Switch 的意思便是精準的根據(jù)不同的 path 渲染不同 Route 下的組件。但是,加了 Switch 之后路由匹配規(guī)則是從上到下執(zhí)行,一旦發(fā)現(xiàn)匹配,就不再匹配其余的規(guī)則了。因此在使用的時候一定要“百般小心”。

上面代碼中,用戶訪問 /router/book 時,不會觸發(fā)第二個路由規(guī)則(不會展示“圖書”),因為它會匹配 /router/:type 這個規(guī)則。因此,帶參數(shù)的路徑一般要寫在路由規(guī)則的底部。

路由的基本原理

路由做的事情:管控 URL 變化,改變?yōu)g覽器中的地址。

Router 做的事情:URL 改變時,觸發(fā)渲染,渲染對應(yīng)的組件。

URL 有兩種,一種不帶 #,一種帶 #,分別對應(yīng) Browse 模式和 Hash 模式。

一般單頁應(yīng)用中,改變 URL,但是不重新加載頁面的方式有兩類:

Case 1(會觸發(fā)路由監(jiān)聽事件):點擊 前進、后退,或者調(diào)用的 history.back( )、history.forward( )

Case 2(不會觸發(fā)路由監(jiān)聽事件):組件中調(diào)用 history.push( ) 和 history.replace( )

于是參考「源碼解析 」這一次徹底弄懂 React-Router 路由原理(https://blog.csdn.net/zl_alien/article/details/109231294) 一文,針對上述兩種 Case,以及這兩種 Case 分別對應(yīng)的兩種模式,作出如下總結(jié)。

 

圖片來源:「源碼解析 」這一次徹底弄懂 React-Router 路由原理

Browser 模式

Case 1:

URL 改變,觸發(fā)路由的監(jiān)聽事件 popstate,then,監(jiān)聽事件的回調(diào)函數(shù) handlePopState 在回調(diào)中觸發(fā) history 的 setState 方法,產(chǎn)生新的 location 對象。state 改變,通知 Router 組件更新 location 并通過 context 上下文傳遞,匹配出符合的 Route 組件,最后由 <Route /> 組件取出對應(yīng)內(nèi)容,傳遞給渲染頁面,渲染更新。

/* 簡化版的 handlePopState (監(jiān)聽事件的回調(diào)) */
const handlePopState = (event)=>{
     /* 獲取當前l(fā)ocation對象 */
    const location = getDOMLocation(event.state)
    const action = 'POP'
     /* transitionManager 處理路由轉(zhuǎn)換 */
    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (ok) => {
        if (ok) {
          setState({ action, location })
        } else {
          revertPop(location)
        }
    })
}

Case 2: 以 history.push 為例,首先依據(jù)你要跳轉(zhuǎn)的 path 創(chuàng)建一個新的 location 對象,然后通過 window.history.pushState (H5 提供的 API )方法改變?yōu)g覽器當前路由(即當前的 url),最后通過 setState 方法通知 Router,觸發(fā)組件更新。

const push = (path, state) => {
   const action = 'PUSH'
   /* 創(chuàng)建location對象 */
   const location = createLocation(path, state, createKey(), history.location)
   /* 確定是否能進行路由轉(zhuǎn)換 */
   transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (ok) => {
   ... // 此處省略部分代碼
   const href = createHref(location)
   const { key, state } = location
   if (canUseHistory) {
     /* 改變 url */
     globalHistory.pushState({ key, state }, null, href)
     if (forceRefresh) {
       window.location.href = href
     } else {
       /* 改變 react-router location對象, 創(chuàng)建更新環(huán)境 */
       setState({ action, location })
     }
   } else {
     window.location.href = href
   }
 })
}

Hash 模式

Case 1:

增加監(jiān)聽,當 URL 的 Hash 發(fā)生變化時,觸發(fā) hashChange 注冊的回調(diào),回調(diào)中去進行相類似的操作,進而展示不同的內(nèi)容。

window.addEventListener('hashchange',function(e){
  /* 監(jiān)聽改變 */
})

Case 2:

history.push 底層調(diào)用 window.location.hash 來改變路由。history.replace 底層是調(diào)用 window.location.replace 改變路由。然后 setState 通知改變。

從一些參考資料中顯示,出于兼容性的考慮(H5 的方法 IE10 以下不兼容),路由系統(tǒng)內(nèi)部將 Hash 模式作為創(chuàng)建 History 對象的默認方法。(此處若有疑議,歡迎指正~)

Dva/Router

在實際項目中發(fā)現(xiàn),Link,Route 都是從 dva/router 中引進來的,那么,Dva 在這之中做了什么呢?

答案:貌似沒有做特殊處理,Dva 在 React-Router 上做了上層封裝,會默認輸出 React-Router (https://github.com/ReactTraining/react-router) 接口。

我們對 Router 做過的一些處理

Case 1:

項目代碼的 src 目錄下,不管有多少文件夾,路由一般會放在同一個 router.js 文件中維護,但這樣會導(dǎo)致頁面太多時,文件內(nèi)容會越來越長,不便于查找和修改。

因此我們可以做一些小改造,在 src 下的每個文件夾中,創(chuàng)建自己的路由配置文件,以便管理各自的路由。但這種情況下 React-Router 是不能識別的,于是我們寫了一個 Plugin 放在 Webpack 中,目的是將各個文件夾下的路由匯總,并生成 router-config.js 文件。之后,將該文件中的內(nèi)容解析成組件需要的相關(guān)內(nèi)容。插件實現(xiàn)方式可了解本團隊另一篇文章:手把手帶你入門Webpack Plugin。

Case 2:

路由的 Hash 模式雖然兼容性好,但是也存在一些問題:

  1. 對于 SEO、前端埋點不太友好,不容易區(qū)分路徑
  2. 原有頁面有錨點時,使用 Hash 模式會出現(xiàn)沖突

因此公司內(nèi)部做了一次 Hash 路由轉(zhuǎn) Browser 路由的改造。

如原有鏈接為:http://aaa.bbb.com/book-center/#/book/list?id=123

改造方案為:

通過新增以下配置代碼去掉 #

import createHistory from 'history/createBrowserHistroy';
const app = dva({
  history: createHistory({
    basename'/book-center',
  }),
  onError,
});

同時,為了避免用戶訪問舊頁面出現(xiàn) 404 的情況,前端需要在 Redirect 中配置重定向以及在 Nginx 中配置舊的 Hash 頁面轉(zhuǎn)發(fā)。

Case 3:

在實際項目中,其實我們也會去考慮用戶未授權(quán)時路由跳轉(zhuǎn)、頁面 404 時路由跳轉(zhuǎn)等不同情況,以下 Case 和代碼僅供讀者參考~

<Switch>
  {
    getRoutes(match.path, routerData).map(item =>
     (
       // 用戶未授權(quán)處理,AuthorizedRoute 為項目中自己實現(xiàn)的處理組件
       <AuthorizedRoute
         {...item}
         redirectPath="/exception/403"
       />

     )
    )
  }
  // 默認跳轉(zhuǎn)頁面
  <Redirect from="/" exact to="/list" />
  // 頁面 404 處理
  <Route render={props => <NotFound {...props} />} />
</Switch>

參考鏈接

「源碼解析 」這一次徹底弄懂react-router路由原理 (https://blog.csdn.net/zl_alien/article/details/109231294)

react-router v4 路由規(guī)則解析 (https://www.cnblogs.com/pqjwyn/p/9936153.html)

二級動態(tài)路由的解決方案 (https://aibokalv.oschina.io/myarticle/2017/04/01/20170401%E4%BA%8C%E7%BA%A7%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/)



瀏覽 101
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 青青在线免费视频| 日韩在线观看AV| 影音先锋蜜桃| 国产娇小13videos糟蹋| www.四虎成人网站| 久久99高清| 天堂а√在线中文在线新版| 国产熟妇码视频黑料| 玖玖资源在线观看| 2025AV天堂网| 男人天堂AV片| 超碰2023| 青青草免费公开视频| 国产伊人自拍| 日韩偷拍网| 欧美日韩国产精品| 国产精久久| 青青草视频| 色天使色天堂| 黄网站在线播放| 操逼在线观看| 日韩在线网址| 香蕉伊人在线| 欧美狼友| 久久99国产乱子伦...| 亚洲一区二区无码| 亚洲在线一区二区| 91麻豆精品传媒国产| 五月天在线电影| 亚洲区欧美区| 六月丁香五月天| 九九韩剧网最新电视剧免费观看| 国产性爱在线| 国产天堂在线观看| 婷婷在线观看视频| 三级片AV在线| 欧美三级欧美一级| 精品国产免费无码久久噜噜噜AV| 亚洲成人精品视频| 美女中文字幕| 91麻豆精品91久久久ios版| 好吊视频一区二区三区红桃视频you| 久久理论| 国产婷婷久久Av免费高清| 久久精品一二三| 西西4444WWW大胆无视频| 国产色拍| 越南小嫩嫩BBWBBw| 风流老熟女一区二区三区| 成人在线免费视频观看| 看一级黄色视频| 日韩成人无码AV| 天天干天天肏| 午夜看黄| 69国产精品视频免费观看| 日韩视频一区二区三区| 亚洲AV秘无码不卡在线观看| 大香伊人| 日韩动态视频| 亚洲不卡视频| 午夜亚洲福利| 亚州精品国产精品乱码不99勇敢| 久久久精品免费视频| 亚洲伊人av| 最近中文字幕免费mv第一季歌词大全| 激情久久五月天| 欧美一级性爱视频| 精品夜夜澡人妻无码AV| 成人丁香| 91国产福利| 成人无码区免费| 日韩操逼av| 欧美激情五月天| 午夜精品久久久久久久91蜜桃| 国产精品成人AV在线| 久热re| 女生自慰在线观看| 亚洲网站免费| 豆花视频成人网站入口| 成人第一页| 成人精品一区二区三区电影| 久操久操| 成人黄色视频网站在线观看| 一级a片在线免费观看| 一区二区三区四区免费观看| 欧美AAAAAAAAAA特级| 成人在线观看网站| 无码人妻A片一区二区青苹果| 嫩草av| 黄色片网站免费观看| 欧美成人aaa| 欧美第一夜| 国产高清无码免费在线观看| 亚洲天堂在线免费观看| 四虎AV在线| 国产91探花| 久久91视频| 精品一区二区三区四区五区六区 | 久久a视频| caoporen| 91网站免费在线观看| 亚洲黑人av| 九九九免费视频| 日韩午夜电影| 日本乱轮视频| 欧美视频在线观看| 久久黄视频| 国产精品视频在线播放| 三级久久| 久久久久亚洲AV成人网人人软件| 女生自慰网站免费| 国产A区| 玖玖资源站中文字幕| 欧美日韩V| 黄色成人18| 欧美男人的天堂| 东京热av一区二区| 久热99| 青青伊人久久| 国产69久久精品成人看| 噜噜噜网| 波多野结衣黄色视频| 日韩欧美国产成人| 中文字幕AV在线免费观看| 韩日一级17c| 久久精品国产99精品国产亚洲性色| 一级黄色A片视频| 国产欧美一级片| 亚洲无码三区| 狠狠干天天干| 亚洲另类图片小说| 亚洲色情在线播放| 亚洲狼友| 日本无码高清| 人人上人人摸| 午夜福利免费在线观看| 亚洲色图15p| 青娱乐毛片| 7799综合| 黄色小说在线看| 国产免费一区二区三区网站免费| 婷婷五月天av| 亚洲精品成AV人片天堂无码 | 俺也来俺也去WWW色| 99精品视频免费观看| 日韩欧美内射| 国产精品一区二区三区在线| 黄片在线网站| 欧美精品一区二区少妇免费A片| 日韩无码AV电影| 水果派中文解说AⅤ| h网站在线看| 免费福利在线视频| 操逼视频免费看| av免费在线播放| 中文字幕第315页| 亚洲综合色网站| 欧美日韩免费在线视频| 操逼麻豆| 黄色免费网站在线观看| 夜夜操天天操| 丁香五月六月婷婷| 少妇精品久久久久久久久久| 国产aaaaaaaaaaaaa| 佳佳女王footjob超级爽| 无码三级在线观看| 91日逼视频| WWW久久| 欧美熟妇一区二区三区| 少妇人妻一区二区三区| 日韩在线高清视频| 欧美A视频在线观看| 黑人一级片| 久久精品视频免费观看| 久久免费视屏| 久热草| 91精品成人电影| 影音先锋男人天堂| 综合视频一区| 久艹久| 久久久久久久久久久久久自慰小片 | 欧美打炮网| 国内操逼视频| 日韩成人无码AV| 91人妻无码精品一区二区| 黄色操屄视频| 精品人妻二区三区蜜桃| 色爱av| gogogo日本免费观看高清电视剧的注意| 天堂中文8资源在线8| 热无码av| 日韩免费福利视频| 蜜桃视频91| H片在线观看| 欧美黄片在线| 国产AV一级| av在线一区二区| 青青操网| 欧美日韩东京热| 懂色av懂色av粉嫩av无码| 久色视频在线| 狠狠干2025| 色色综合热| 91麻豆国产福利在线观看| 思思热在线视频精品| 91蜜臀在线| 激情无码五月天| 四虎影库男人天堂| 天堂色| 大香蕉精品欧美色综合2025| 奶大丰满一乱一视频一区二区三区在| 日韩精品在线免费视频| 强伦轩人妻一区二区三区最新版本更新内容 | 影音先锋AV啪啪资源| 国产成人精品在线| 操欧美逼| 国产精品成人AV片| 精品AV| 欧美老妇另类| 成人福利在线| 黄色操逼网站| a在线观看| 99热在线播放| 日韩精品欧美一区二区三区| 久久香蕉综合在线| 日本精品电影| 成人国产精品在线观看| 四虎在线视频观看96| 97操逼网| 国产青草视频在线观看| 亚洲日韩精品欧美一区二区yw| 大香蕉九九| 中文字幕乱在线| 日韩中文字幕视频在线| yjizz视频网| 久草国产在线视频| 国产欧美日韩在线视频| 久草手机视频在线观看| av手机版| 天天日天天射天天干| 少妇福利| 97色综合| 97男人的天堂| 国产三级偷拍| 99久久成人| 亚洲有码在线视频| 九九精品在线视频| 体内射精视频| 四虎精品一区二区| 69视频网| 青青草原av| 亚州AV天堂| 亚洲素人无码| AV无码网| 免费观看黄片网站| 高清中文字幕在线A片| 无码日韩人妻精品久久蜜桃| 怮交小拗女小嫩苞视频| 西西人体大胆ww4444| 午夜福利码一区二区| 亚洲中文字幕在线播放| 欧美东京热视频| 18禁无码网站| 国产午夜精品一区二区三区牛牛| 五月丁香激情在线| 2019国产精品| 国产无码免费在线观看| 婷婷操| 黄片视频免费| 日韩小电影在线观看| 丰满人妻-区二区三区| www高清无码| 婷婷午夜福利| 偷拍亚洲欧美| 青青草无码成人天堂免费| 综合久久99| 超碰日| 国产熟女在线| 亚洲毛片在线| 亚洲专区视频| 国产xxxx| 西西人体BBBBBB| 亚洲人妻有码| 操屄视频在线| 日本黄色视频在线| 国产一级a毛一级a做免费的视频l 精品国产免费观看久久久_久久天天 | 蜜桃BBwBBWBBwBBw| 日韩AV在线免费观看| 美女裸体视频网站| 黄色av免费在线| 亚洲国产黄色视频| 国产一区在线视频| 精品一区二区三区毛片| 色操逼网| 超碰爱爱| 在线视频你懂得| 国产成人无码区免费视频| 亚洲日韩在线看| 久操网址| 日日干夜夜操| 天天摸天天添| 免费观看一级毛一片| 欧美三级大片| 91视频一区| 午夜视频免费在线观看| 九九精品在线视频| 婷婷精品国产一区二区三区日韩| 足交在线观看| 一本色道精品久久一区二区三区| 免费一级AAAAA片在线播放| 日本欧美黄色| 人人操人人射| 先锋AV资源站| 久久国内| 性爱无码| 日本乱轮视频| 久在线视频| 亚洲天堂免费视频| 丰满大爆乳波霸奶| 久草福利网| 中日韩欧美一级A片免费| 丁香花在线高清完整版视频| 天堂网久久| 婷婷在线观看视频| 亚洲精品成人无码| av在线无码观看| 国产一级婬片A片免费无成人黑豆| 国产高清视频在线| 麻豆网站91| 久久永久视频| 海滩AV黑人| 一级a免一级a做免费线看内裤| 欧美亚洲日韩中文字幕| 美国无码黄片| 亚洲精品一区二区三区四区五区六区 | 北条麻妃精品| 脓肿是什么原因引起的,该怎么治疗 | 久久免费成人| 久9视频| 97人妻精品| 亚洲最新AV网站| 黄色片视频在线观看| 欧美日韩国产不卡视频| 九色PORNY国产成人| 欧美香蕉| 成人尤物网站| 60分钟上大床又黄又爽| 丁香六月婷婷| AV无码一区二区三区| 国产黄色精品| 亚洲精品色婷婷| av手机版| 国产叼嘿视频| 国产女人18毛片水18精品| 色婷婷综合网| 色资源在线观看| 99re在线观看视频| 白丝在线观看| 国产成人在线免费| 韩国三级中文字幕HD久久精品| 国产主播中文字幕| 怡春院免费视频| 日韩无码一二三区| 婷婷视频在线| 国精品无码A区一区二区| 黄片视频在线免费观看| 大香蕉福利在线| 91农村站街老熟女露脸| 日韩精品一区二区三| 国产一级AV片| 羽月希在线播放| 综合久久亚洲| S28AV| 97人人人人人人| 91水蜜桃| 日韩熟妇视频| 五月天网址| 狠狠狠狠狠狠狠狠狠| 国产成人无码A片V99| 91国产视频网站| 免费无码婬片AAAA片直播| 做aAAAAA免费视频| 最新国产在线| 国产精品探花熟女| 无码人妻精品一区二区三千菊电影 | 人人操人人射| 精品女人| 欧美日韩性爰视频| 国产成人免费做爰视频| 国内成人自拍| 天天视频黄色| 伊人精品大香蕉| 亚洲永久视频| 国产一级A片免费播放| 在线观看黄片视频| 制服丝袜一区| 日韩操b| 囯产精品一区二区三区AV做线| 国产XXXX| 69亚洲精品| 亚洲日韩欧美性爱| 亚洲欧洲成人| 国产精品久久77777| 久久婷五月| 中文字幕自拍偷拍| 欧美性爱一区二区三区| 人妻毛片| 午夜精东影业果冻传媒| 亚洲精品一二| 中文字幕有码在线播放| AV一区二区三区四区| 女人BBBB| 久久不卡| 老熟妇搡BBBB搡BBBB| 久久99精品国产.久久久久| 日韩欧美一| 无码三级午夜久久人妻| 日韩人妻无码专区| 天天躁夜夜躁狠狠躁AV| 中文字幕有码在线播放| 久草热在线| 国产午夜精品一区二区三区嫩A| 人人爽人人爽| 日韩三级片无码| 天天干天天射天天| 91九九| 成人黄色性爱视频| 中日韩中文字幕一区二区区别| 污污污www精品国产网站| 久草免费福利| 色图在线观看| 丁香婷婷色| 97精品人妻一区二区| 偷偷操av| 一区二区三区高清| 激情二区| 操逼黄色视频| 久久成人电影院| 免费无码国产在线| 无码高清在线| 日本精品无码a62v在线| 小草一区| 欧美色色影院| 91大鸡巴| 嫩BBB| 亚洲日韩AV电影| 九色自拍| 亚洲秘无码一区二区三区蜜桃中文 | 欧美黄色网视频| 99在线观看免费视频| 狼人综合在线| 久久久久久久久久久久成人| 国产成人视频| 免费操逼网| 夜色88V精品国产亚洲| 欧美黑人操逼视频| 日韩中文在线视频| 狠狠成人| 广西少妇BBwBBwBBw| 亚洲成人三区| 91精品久久久久久久久| 新BBWBBWBBWBBW| 日韩无码视频二区| 亚洲A√| 久热福利| 91人人精品| 亚洲成人福利电影| 少妇一级| 妻子互换被高潮了三次| 国产操逼小视频| 亚洲视频精选| 婷婷丁香五月激情一区综合网| 特黄aaaaaaaa真人毛片| 丁香六月啪啪| 北条麻妃久久久| 亚洲一区二区网站| 中文字幕视频| 中文字幕免费看| 亚洲免费观看高清完整版在线观| 无码三级午夜久久人妻| 人人操人人看人人摸| 一级免费视频| 午夜无码人妻AV大片| www.人人摸| 成人黃色A片免费看| 蝌蚪九色啦403| 人妻无码精品| 久操视频在线播放| 这里只有精品在线观看| 影音先锋成人AV资源| 西西444WWW无码视频软件功能介绍 | 日本黄色a片| 色五月天导航| 天堂素人| 四房婷婷| 黄色免费大片| 日韩在线精品视频| 无码草逼| 插插插综合| 日韩色图在线观看| 久久亚洲Aⅴ成人无码国产丝袜| 中文字幕的| 亚洲成人在线网站| 亚洲成人网在线观看| 亚洲精品69| 肏逼综合网| 毛片A| 蜜臀成人片| 天天添夜夜添| 91视频在线观看18| 精品国产乱子伦一区二区三区最新章| 好吊视频一区二区| 午夜天堂网| 欧美另类综合| 亚洲AV无码精品国产| 日韩无码AV中文字幕| 动漫人物插画动漫人物的视频软件| 狠狠干,狠狠操| 亚洲精品一区无码A片丁香花 | 日韩中文字幕电影| 五月丁香婷婷在线| 玖玖99视频| 无码一级二级| 久久婷婷国产综合| 操日本女人逼| 老司机一区二区| 北条麻妃99精品青青久久| 亚洲三级视频在线播出| 国产精品无码成人AV电影| 性爱视频亚洲| 天天干天天操综合| 特级毛片在线观看| 淫荡少妇美红久久久久久久久久| 国产精品一二三| 99中文字幕| 精品无码视频| 欧美一区二区在线| 大香蕉一区二区三区| 日韩成人无码AV| 婷婷操| 中文字幕第83页| 国产av黄色| 中文av在线播放| 免费无码成人片在线播放| 婷婷久久久久| 午夜一区| 国产精品AV在线| 91资源在线| 亚洲一级内射| 无码av在线观看| 日本五十路| 日韩三级毛片| 国产精品美女| 无码迷穴| 日本无码久久嗯啊流水| 亚洲有码人妻| 玖玖热在线视频| 伊人久久大香线蕉| 艹逼视频免费观看| 性爱av在线观看| 国产精品久久一区二区三区影音先锋| 天天射日| 欧美女人日逼视频| 亚洲第一无码| 亚洲av自拍| 婷婷五月丁香激情| 欧美操逼的| 三级片91| 日韩一区二区三区在线| 嫩BBB槡BBBB槡BBBB撒尿-百度 | 最近中文字幕在线观看| 色撸撸在线视频| 日韩熟妇视频| 天天色AV| 欧美AAA视频| 成人在线一区二区| 在线视频亚洲| 大吊妞| 91人妻一区二区三区无不码超满| 中文在线不卡| 黄色亚洲网站| 操比视频在线观看| 国产AV黄片| 人人肏| 手机免费av| 无码av无码AV| 亚洲精品另类| 激情小视频在线观看| 国产欧美日韩视频| 26uuu亚洲| 亚洲无码一区二区三区| 亚洲日韩国产AV无码无码精品| 草逼免费视频| 欧美自拍视频| 霸道总裁雷总各种姿势白浆爱情岛论坛 | AV大全在线免费观看| 青青草网址| 潮喷在线观看| 国产无码在线看| 麻豆免费成人传媒| 2025精品精品视频| 亚洲成人情趣大香蕉| 欧美在线视频一区二区| 国产操逼免费视频| 人妻人人操人人爽| 69av在线播放| 黑人vs亚洲人在线播放| 国产精品乱码一区二区三区| 国产亚洲成人综合| 偷拍欧美日韩| 国产一区免费| 极品美女扒开粉嫩小泬高潮一| 亚洲无码一区二区三区蜜桃| 国产69精品久久| 成年人黄色视频在线观看| 免费精品视频| 亚洲操逼网| 中文字幕亚洲观看| 黄色亚洲网站| 蜜桃Av噜噜一区二区三| 你懂的视频在线观看| 狼人香蕉在线视频| 最新亚洲无码在线观看| 国产精品AV在线观看| 狠狠一区| 麻豆传媒嫂子| www.黄色av| 奇米影视77777| a在线免费| 国产精品视频一区二区三| 欧美三级视频在线| 欧美精品在线观看视频| 欧美成在线| 女神思瑞精品一区二区三区| 波多野结衣精品无码| 精品无码一区二区三区的天堂| A片视频在线观看| 日韩图片区小说视频区日| 91精品视频在线免费观看| 人人草人人摸人人看| 亚洲欧美人妻| 国产乱国产乱老熟300视频 | 啊啊啊国产| 日本成人中文字幕在线观看| 色色综合热| 免费视频一区二区三区四区| 日韩在线一区二区| 亚洲波多野结衣| 天堂网中文| 嫩草av| 91精品91久久久中77777| 99热在线只有精品| 天天拍夜夜操| 亚洲无码成人AV| 人妻精品久久久久中文字幕69| 久草这里只有精品| 人操人人人操| 欧美日韩免费在线| 亚洲久久无码| 视频一区在线播放| 精品黄色片| 国产激情久久| 蜜桃Av噜噜| 色综合一区二区三区| 开心激情网站| 免费黄色福利视频| 人人操AV| 91新婚人妻偷拍| 日本少妇做爱| 精品三级片| 2016超碰| 大鸡巴久久久| 西西www444无码大胆| 蜜桃av秘无码一区三| 中文字幕在线观看免费| 毛片小电影| 黄色三级毛片| 午夜探花视频| 一级a一级a爰片免费| 黄色伊人| 亚洲婷婷在线视频| 日韩午夜福利视频| 国产乱子伦-区二区| 中文字幕亚洲高清| 日本少妇午夜福利| 亚洲天堂在线看| 妹子干综合| 爱爱爱网址| 国产三级网| 无码人妻精品一区二区三区温州| 无码日韩视频| 成人三级电影网| 久久熟女嫩草成人片免费| 蜜臀在线视频| 91人妻人人澡人人添人人爽| 狠狠操av| 高清无码一级片| 久久久久国产视频| 看免费操逼视频| 欧美第一夜| 91一区二区在线播放精品| 影音先锋av中文字幕| 亚洲无码三级片在线观看| 91无码人妻一区二区| 亚洲高清无码电影| 中文字幕成人无码| 乳揉みま痴汉电车羽月希免费观看| 五月婷婷色播| 无码免费一区二区三区| 97AV人妻无码视频二区| 亚洲秘无码一区二区三区欧美| 国产九九热视频| 一区二区三区在线看| 天天干天天射天天爽| 北条麻妃被操| 亚洲AV永久无码国产精品久久| 欧美污网站| 一级婬片A片AAAAA毛片| 欧美一级片在线| 久久五月天综合| 一本道高清无码视频| 欧美日韩国产成人综合| 天天干天天操天天射| 麻豆国产在线| 伊人成人在线| 成人黄色视频网站在线观看| 韩国三级AV| 日逼视频免费| 91精品国产乱码久久久| 在线无码av| 99精品999| 黄色视频网站免费| 成人91视频| 人妻少妇偷人精品无码免费| 色呦呦在线| 日韩毛片在线视频x| 国产精品一卡| 中国精品77777777| 日韩少妇| 久操视频免费在线观看| 蜜桃精品久久久| 九九精品国产| 91久久人澡人妻人人澡人人爽| 少妇免费视频| 日韩大香蕉网| 精品人妻中文字幕视频| 国产精品成人无码a无码| 最新中文| 69无码| 内射欧美| 国产精品欧美激情| 久久精品国产视频| 黄色天堂| 一级成人片在线观看| 欧美色就是色| 内射网站在线看| 极品小仙女69| 中日韩在线视频| 亚洲高清视频在线播放| 国产视频福利| 翔田千里无码在线| 国产精品国产三级国产AⅤ| 精品视频在线播放| 农村老太HD肉HD| 亚洲成av| 波多野结衣无码视频| 国产精品国产精品| 亚洲区在线播放| 欧美一区二区三区婷婷五月| 无码看片| 亚洲午夜成人精品一区二区| 夫妻成人免费看片一区二区| 夜夜嗨av| 午夜视频在线看| 丰满少妇一级片| 午夜香蕉| 亚洲天堂日本| 欧美亚洲日韩一区| 色情欧美一级A片| 91久久| 日本免费不卡视频| 国产三级高清无码| 成人性爱在线观看| 国产一级二级视频| 亚洲AV无码成人H动漫| 久久久桃色| 亚洲精品乱码久久久久久蜜桃91| 亚洲精品一区二区三区无码电影| 丰满人妻一区二区三区Av猛交| 国产中文字幕在线播放| 欧美激情无码一区二区三区张丽 | 狠狠色噜噜狠狠狠7777米奇网| 免费看a| 久久一二三区| 男女拍拍网站| 翔田千里53歳在线播放| 9久热| 怡红院视频| 亚洲免费观看高清完整版在va线观看 | 亚洲性片| 艹逼无码| 色射影院| 青青av| 久久艹视频| 操逼操123| 一级AV在线| 亚洲成人在线视频| 超碰人人草| 国产精品久久久久无码| ThePorn精品无码| 精品逼| 日韩性爱网站| 中文天堂网| 天天干天天舔| 福利无码| 大肉大捧视频免费观看| 日本免费福利视频| 亚欧无码| 亚洲福利视频在线| 人人搞人人摸| 亚洲在线一区| 福利一区在线观看| 日韩性爱网址| 人人草人人搞| 操逼网123| 中文字幕日韩有码| 国产综合久久777777麻豆| 可以免费看的AV| 九一无码| 色婷婷在线视频播放| xxx久久| 欧美伊人| 性爱无码网站| 日韩无码影视| 日本电影一区二区三区| 欧美精品久久久久久久久| 国产精品无码乱伦| 日本无码区| 老女人操逼| 最好看的MV中文字幕国语电影 | 亚洲国产成人在线| 亚洲一区二区三区在线++中国| 黄色日逼| 国产在线秘麻豆精品观看| 毛多水多丰满女人A片| 91精品国产aⅴ一区二区| av中文字幕无码| 高清无码在线视频观看| 欧美日韩网| 中文字幕精品三区无码| 超碰最新在线观看| 91成人免费电影片| 天天天日天天天操| 狠狠久久| 精品福利在线观看| 久久影音先锋| 成人无码一区二区| 色婷婷一区二区| 青青草伊人网| 亚洲熟女视频| 91在线无码精品秘入口三人| 一级特黄色| AV资源网站| 欧美亚洲图区| 久久婷婷成人综合色怡春院| 特级西西人体444www高清| 人人看,人人摸| 黑人毛片91久久久久久| 国产福利电影在线| 高圆圆一区二区三区| 国产精品嫩草久久久久yw193| 日本亚洲视频| 亚洲一区黄色| 国产av电影网| 男女av在线观看| 色情片在线播放| 91嫩草久久久久久久| 国产欧美精品一区二区三区 | 天堂色| 男人的天堂av网站| 国产麻豆精品ThePorn| 激情乱伦网| 亚洲日韩毛片| 日韩在线大香蕉| 探花在线| 亚洲无码中文字幕视频| 日韩在线99| 成人精品一区日本无码网站suv/ | 国产高清一区二区| BBW老熟女BBw| 麻豆国产视频| 四川BBBB擦BBBB| 午夜精品视频| 欧美性爱精品一区| 好吊AV| 3DAV一区二区三区动漫| 欧美成人免费精品| 九色丨蝌蚪丨老版熟女| 日本一级黄色| 中文字幕人妻在线中文乱码怎么解决|