国产91在线观看_国产卡1卡2卡三卡在线_综合久久久久综合_99视频有精品高清视频

Next.js 在 2016 年發(fā)布時(shí)的競(jìng)爭(zhēng)優(yōu)勢(shì)之一是其內(nèi)置的路由系統(tǒng)。它同時(shí)支持客戶端和服務(wù)器端渲染,因此開(kāi)發(fā)人員無(wú)需配置像 React Router DOM 這樣的第三方路由庫(kù)。Next.js 的路由器也是基于文件系統(tǒng)的,這意味著應(yīng)用程序中的路由由文件和文件夾的組織方式?jīng)Q定。這使得它對(duì)大多數(shù)開(kāi)發(fā)人員更具吸引力。

Vercel 團(tuán)隊(duì)一直在通過(guò)每個(gè)新版本改進(jìn)路由系統(tǒng)。Next.js 9 引入了 API 路由,讓開(kāi)發(fā)人員可以創(chuàng)建處理特定 API 端點(diǎn)的無(wú)服務(wù)器函數(shù)。Next.js 13 引入了 App Router,這是一種新的路由約定,可讓您在同一應(yīng)用程序中渲染客戶端和服務(wù)器端 React 組件。

App Router 具有許多功能,包括布局、動(dòng)態(tài)路由、嵌套路由以及一組稱為并行和相交路由的新路由約定。這些功能可用于創(chuàng)建高級(jí)路由模式。

在本文中,我們將探討什么是平行和相交路線,將它們與現(xiàn)有的路線選項(xiàng)進(jìn)行比較,了解它們的約定,并演示如何使用它們。


先決條件

預(yù)先了解 Next.js 將有助于閱讀本文,但如果您對(duì) React 有深入的了解,則不需要了解這些知識(shí)

什么是并行路由?


并行路由是 Next.js 中一種新的高級(jí)路由約定。根據(jù)文檔:

“并行路由是一種 Next.js 路由范例,它允許您同時(shí)或有條件地在同一布局中渲染一個(gè)或多個(gè)頁(yè)面,這些頁(yè)面可以獨(dú)立導(dǎo)航。”

換句話說(shuō),并行路由允許您在同一視圖中渲染多個(gè)頁(yè)面。

并行路由在渲染應(yīng)用程序的復(fù)雜動(dòng)態(tài)部分時(shí)最有用,例如在具有多個(gè)獨(dú)立部分或模態(tài)的儀表板中。

下圖是 Next 文檔中的儀表板頁(yè)面的插圖,演示了并行路線的復(fù)雜性:

在這種情況下,@team@analytics路線使用并行路由同時(shí)呈現(xiàn)為儀表板布局的部分。

并行路由使用@folder約定來(lái)定義,也稱為"插槽",本質(zhì)上是一個(gè)以@符號(hào)為前綴的文件夾:

插槽定義在路由段內(nèi),用作容器來(lái)包含不同類型的動(dòng)態(tài)內(nèi)容。一旦定義,它們就可以在相應(yīng)路由段內(nèi)的layout.tsx文件中作為props輕松訪問(wèn)。
例如,假設(shè)我們有一個(gè)儀表板頁(yè)面,想要使用并行路由模塊化地組織其內(nèi)容。第一步是在app/dashboard目錄中為team, analytics, and revenue部分定義命名插槽:
在儀表板中渲染的page.tsx文件內(nèi)容

為簡(jiǎn)單起見(jiàn),我們將在插槽中包含占位符內(nèi)容,如下所示:

// app/dashboard/@team/page.tsx
export default function Team() {return ( <h2>Team slot</h2> <svg>...</svg> )}// app/dashboard/@revenue/page.tsx
export default function Revenue() {return ( <h2>Revenue slot</h2> <svg>...</svg> )}// app/dashboard/@analytics/page.tsx
export default function Analytics() {return ( <h2>Analytics slot</h2> <svg>...</svg> )}
插槽定義后,儀表板路由段內(nèi)的layout.tsx文件現(xiàn)在接受@analytics、@revenue和@team插槽作為props,這取代了傳統(tǒng)的導(dǎo)入方式。
因此,如果我們進(jìn)入layout.tsx文件并將props對(duì)象記錄到控制臺(tái),我們將得到以下結(jié)果:
{analytics: {...},},revenue: {...},},teams: {...},},children: {...}}

下一步是訪問(wèn)props對(duì)象的插槽屬性,并在布局中動(dòng)態(tài)渲染它們,如下所示:

import React from "react";
interface ISlots {children: React.ReactNode; analytics: React.ReactNode; team: React.ReactNode; revenue: React.ReactNode;}
export default function DashboardLayout(props: ISlots) {
return (<div><h1>{props.children}</h1><div>{props.analytics}</div><div>{props.team}</div><div >{props.revenue}</div></div> );}

當(dāng)你導(dǎo)航到localhost:3000/dashboard時(shí),你應(yīng)該會(huì)看到用并行路由渲染的儀表板布局:

從這個(gè)例子中還有一些其他細(xì)節(jié)需要注意。首先,除了定義的team、analytics和revenue插槽之外,還有一個(gè)children插槽,它是一個(gè)專門(mén)設(shè)計(jì)用于渲染/dashboard路由段內(nèi)page.tsx文件內(nèi)容的隱式插槽。因此,它不需要映射到文件夾:


在儀表板中渲染的page.tsx文件內(nèi)容,意味著dashboard/page.tsx相當(dāng)于dashboard/@children/page.tsx。
其次,你可能會(huì)認(rèn)為analytics、team和revenue插槽充當(dāng)路由段,訪問(wèn)它會(huì)改變URL路徑。但是,它們并不會(huì)影響URL結(jié)構(gòu),文件路徑如app/dashboard/@team/members還是可通過(guò)localhost:3000/dashboard/members訪問(wèn)。
為什么要使用并行路由??
與傳統(tǒng)方法相比,并行路由的明顯優(yōu)勢(shì)在于能夠使用插槽在同一URL和視圖中渲染完全獨(dú)立的代碼。
傳統(tǒng)上,開(kāi)發(fā)人員在動(dòng)態(tài)渲染頁(yè)面內(nèi)容時(shí)面臨限制,因?yàn)閭鹘y(tǒng)的路由機(jī)制只支持線性渲染 - 意味著一個(gè)URL對(duì)應(yīng)一個(gè)視圖。
這就是為什么多年來(lái)組件組合開(kāi)發(fā)被采用的原因。它支持渲染模塊化和可重用的組件,這些組件可以組合構(gòu)造復(fù)雜的用戶界面。
如果我們?cè)趦x表板示例中使用組件組合方法,@analytics、@team和@revenue插槽將被定義為組件,并在儀表板布局中排列如下:
import UserAnalytics from "@/components/Team";import RevenueMetrics from "@/components/Analytics";import Notifications from "@/components/Revenue";
export default function DashboardLayout({ children,}: { children: React.ReactNode;}) {return (<><div>{children}</div><UserAnalytics /><Revenue /><Team /></> );}


雖然這種方法有效,并且可以幫助使代碼更易于管理,尤其是在多個(gè)團(tuán)隊(duì)合作的項(xiàng)目中,但使用并行路由也可以達(dá)到相同的效果,并且可以獨(dú)立流式傳輸和子導(dǎo)航。
獨(dú)立路由流?
每個(gè)并行路由都獨(dú)立流式傳輸?shù)讲季?允許單獨(dú)加載和錯(cuò)誤狀態(tài),完全與布局的其他部分隔離。
例如,如果分析部分加載時(shí)間比儀表板的其他部分長(zhǎng),則可以僅為該部分顯示加載指示器,而其他部分則保持完全交互狀態(tài)。
我們可以通過(guò)在每個(gè)插槽中定義loading.tsx和error.tsx文件來(lái)實(shí)現(xiàn)這一點(diǎn),如下圖所示:
在儀表板中定義loading.tsx和error.tsx文件


然后,我們?yōu)檫@些狀態(tài)添加相應(yīng)的內(nèi)容。例如,我們可以為加載狀態(tài)添加一個(gè)加載微調(diào)器,為錯(cuò)誤狀態(tài)添加一個(gè)自定義界面。但為簡(jiǎn)單起見(jiàn),我們可以只添加文本:
export default function Loading() {return <div>Loading...</div>;}

如果我們?yōu)椴宀鄣募虞d時(shí)間添加不同的延遲,我們可以觀察到這一特性的實(shí)際效果:

// wait function to add varying load time
export function wait(time: number) {return new Promise((resolve) => { setTimeout(resolve, time); });}
// app/dashboard/@team/page.tsx
export default async function Team() { Await wait(1000) return ( <h2>Team slot</h2> <svg>...</svg> )}// app/dashboard/@revenue/page.tsx
export default async function Revenue() { Await wait(2000)return ( <h2>Revenue slot</h2> <svg>...</svg> )}// app/dashboard/@analytics/page.tsx
export default async function Analytics() { Await wait(3000)return ( <h2>Analytics slot</h2> <svg>...</svg> ) }


我們將得到以下結(jié)果:實(shí)施了不同延遲的儀表板


請(qǐng)注意,為了讓此功能正常工作,你還必須為children插槽(即/dashboard路徑的根目錄)定義一個(gè)loading.tsx文件:

子導(dǎo)航

插槽的獨(dú)立屬性不僅局限于加載和錯(cuò)誤狀態(tài)。每個(gè)路由都像一個(gè)獨(dú)立的實(shí)體一樣運(yùn)行,完全擁有自己的狀態(tài)管理和導(dǎo)航,因此用戶界面的每個(gè)部分(在這種情況下是儀表板)都像一個(gè)獨(dú)立的應(yīng)用程序一樣運(yùn)行。
這意味著我們可以在插槽內(nèi)創(chuàng)建與dashboard/@folder/sub-folder文件路徑相關(guān)聯(lián)的子文件夾,并在其中來(lái)回導(dǎo)航,而不會(huì)改變其他儀表板部分的狀態(tài)或渲染。
例如,如果我們希望在@team插槽內(nèi)實(shí)現(xiàn)子導(dǎo)航,我們可以創(chuàng)建一個(gè)子文件夾,如下所示:

在儀表板中實(shí)現(xiàn)子導(dǎo)航
然后,我們?cè)贎team插槽中添加一個(gè)鏈接:localhost:3000/dashboard/members,導(dǎo)航到members子文件夾,以及在members子文件夾中添加另一個(gè)鏈接:localhost:3000/dashboard,返回到team的默認(rèn)視圖:
import React from "react";import Card from "@/components/card/card";import { wait } from "@/lib/wait/page";import Link from "next/link";
// app/dashboard/@team
export default async function Team() {return (<><h2>Teams slot</h2><svg>...</svg><Link href="/dashboard/members"><p> Got to /members page </p> </Link> </> ); } // app/dashboard/@team/members export default function Members() { return ( <> <h1>Members page</h1> <Link href="/dashboard"> <p> Got back to /teams page </p> </Link> </> ); }

注意,在某些情況下,當(dāng)嘗試導(dǎo)航回默認(rèn)視圖時(shí),即/dashboard,你可能會(huì)遇到黑屏。這只是開(kāi)發(fā)模式下的問(wèn)題;如果你構(gòu)建項(xiàng)目并運(yùn)行生產(chǎn)版本,一切應(yīng)該都可以正常工作。

未匹配的路由?
當(dāng)插槽內(nèi)的內(nèi)容與當(dāng)前URL不匹配時(shí),就會(huì)發(fā)生未匹配路由。這種情況發(fā)生在子導(dǎo)航時(shí),如上一節(jié)所示,只有儀表板的一個(gè)部分或布局與新路由匹配。
更簡(jiǎn)單地說(shuō),默認(rèn)情況下,每個(gè)插槽都與定義它們的路由段的文件路徑對(duì)齊。在我們的儀表板示例中,這就是/dashboard。
然而,在客戶端導(dǎo)航期間,類似于我們?cè)谏弦还?jié)中所做的,文件路徑會(huì)變?yōu)閐ashboard/members,只與@teams插槽匹配。因此,@analytics和@revenue插槽變成了未匹配狀態(tài)。
這是因?yàn)樵陧?yè)面重載時(shí),Next.js試圖在未匹配的插槽中渲染default.tsx文件。如果文件不存在,Next.js會(huì)拋出404錯(cuò)誤;否則,它會(huì)渲染文件的內(nèi)容。
default.tsx文件為未匹配的插槽提供了fallback?,允許我們?cè)贜ext.js無(wú)法檢索到插槽的活動(dòng)狀態(tài)時(shí)渲染替代內(nèi)容。
為了防止Next.js在訪問(wèn)@team插槽內(nèi)的/dashboard/members路由時(shí)拋出404錯(cuò)誤,我們只需為該路由段內(nèi)的每個(gè)插槽(包括children插槽)添加一個(gè)default.tsx文件:


在路由段內(nèi)為每個(gè)插槽添加Default.tsx文件
現(xiàn)在,當(dāng)我們進(jìn)行到dashboard/members路由的硬導(dǎo)航時(shí),頁(yè)面將正確加載并為未匹配的路由渲染默認(rèn)視圖:

條件路由?

并行路由也可以根據(jù)某些條件有條件地渲染。例如,如果我們只希望經(jīng)過(guò)身份驗(yàn)證的用戶才能訪問(wèn)儀表板,我們可以使用身份驗(yàn)證狀態(tài),如果用戶通過(guò)身份驗(yàn)證則渲染儀表板,否則渲染登錄插槽:

interface ISlots {children: React.ReactNode;  analytics: React.ReactNode;  team: React.ReactNode;  revenue: React.ReactNode;  login: React.ReactNode}
export default function DashboardLayout(props: ISlots) {const isLoggedIn = true; // Simulates auth state
if (!isLoggedIn) return props.login;
return(<> {children} {users} {revenue} {notifications}</> );}


什么是攔截路由?

攔截路由是Next.js的一種路由范式,允許我們從應(yīng)用程序的另一部分加載當(dāng)前上下文或布局中的路由。
攔截路由的概念很簡(jiǎn)單;它本質(zhì)上充當(dāng)中間件,使我們能夠在實(shí)際導(dǎo)航發(fā)生之前攔截路由請(qǐng)求。
考慮登錄模態(tài)或照片源。傳統(tǒng)上,單擊導(dǎo)航欄中的登錄鏈接或照片中的圖像會(huì)將您定向到完全渲染登錄組件或圖像的專用頁(yè)面。
但是,通過(guò)攔截路由,我們可以改變這種行為。通過(guò)攔截路由、屏蔽它并將其覆蓋在當(dāng)前URL上,我們可以將其渲染為覆蓋布局而不切換上下文的模態(tài):

一旦路由被攔截,Next.js就會(huì)保留被攔截的路由,使其可共享。但是,如果發(fā)生硬導(dǎo)航(例如瀏覽器刷新)或通過(guò)可共享的URL訪問(wèn),Next.js將渲染整個(gè)頁(yè)面而不是模態(tài)。在這種情況下,不會(huì)發(fā)生路由攔截。
如何創(chuàng)建攔截路由?
攔截路由遵循與并行路由類似的約定,使用(.)folder約定。該約定包括在文件夾名稱前添加(.)前綴,以匹配同一級(jí)別上現(xiàn)有的路由段。
例如,假設(shè)我們有一個(gè)app/products路由段,其中包含一個(gè)嵌套的動(dòng)態(tài)路由:/[item],可通過(guò)localhost:3000/products/itemId訪問(wèn):

我們可以通過(guò)在products段中創(chuàng)建一個(gè)(.)[item]目錄來(lái)攔截從localhost:3000/products到localhost:3000/products/itemId的導(dǎo)航,如下圖所示:


然后,我們定義當(dāng)路由被攔截時(shí)要渲染的內(nèi)容,如下所示:


interface IimageProps {params: {    item: string;  };}

export default async function Page({ params: { item } }: IimageProps) {const res = await getImage(item);const image = await res.json();
return ( <> <div> <div> <div> <Image src={image.urls.regular} alt={image.alt_description} priority fill style={{ borderRadius: "10px" }} /> </div> </div> <p>{image.alt_description}</p> </div> </> );}

目前,如果嘗試通過(guò) /products 路由訪問(wèn)任何項(xiàng)目的單獨(dú)頁(yè)面,則 URL 將更新為 localhost:3000/products/itemId,并且 /products/(.)[item] 的內(nèi)容呈現(xiàn)攔截的路線,替換預(yù)期項(xiàng)目的內(nèi)容

從上面的示例可以注意到兩件事。首先,在頁(yè)面重新加載后,項(xiàng)目的頁(yè)面會(huì)被渲染;其次,攔截路由被渲染為獨(dú)立頁(yè)面,而不是模態(tài)。
默認(rèn)情況下,攔截路由是部分渲染的。因此,如果發(fā)生頁(yè)面重載或直接訪問(wèn)localhost:3000/products/itemId URL,那么/products/[item]的內(nèi)容將被渲染。
雖然看起來(lái)好像交叉路由被渲染為獨(dú)立頁(yè)面,但實(shí)際上并非如此,因?yàn)樯舷挛谋3植蛔?只有在頁(yè)面重新加載后才會(huì)發(fā)生變化,如前所述。
為了確保路由正確地渲染為帶有背景和必要特征的模態(tài),我們需要在并行路由中定義攔截路由。為此,我們首先在/products路由中創(chuàng)建一個(gè)插槽,并將(.)[item]攔截路由移動(dòng)到其中:

接下來(lái),我們將使用以下代碼將 layout.tsx 文件添加到 /products 目錄中,并在 @modal 插槽中添加 default.tsx 文件:
// app/products/layout.tsx
import React from "react";
export default function layout({ children, modal,}: { children: React.ReactNode; modal: React.ReactNode;}) {return (<div> {children} {modal}</div> );}
// app/products/@modal/default.tsx
Export const Default = () => {return null;};

我們定義了 default.tsx 文件來(lái)防止 Next.js 在模態(tài)未激活時(shí)拋出 404 錯(cuò)誤,并且因?yàn)槲覀儾幌朐谀B(tài)未激活時(shí)顯示任何內(nèi)容,所以我們返回 null 。

現(xiàn)在有了正確的樣式,模態(tài)應(yīng)該在攔截后正確呈現(xiàn):

默認(rèn)情況下,向后導(dǎo)航會(huì)關(guān)閉Modal,但如果您希望向模式添加執(zhí)行此操作的圖標(biāo)或按鈕,可以使用 router.back() ,如下面的代碼所示:

'use client'import { useRouter } from 'next/navigation'
export default function Page() {const router = useRouter()return (<div><span onClick={() => router.back()}>Close modal</span> ...</div> )}

截模式

攔截路由約定的工作方式與相對(duì)路徑約定 ../ 類似,這意味著我們可以使用不同級(jí)別定義攔截路由:

(..)?匹配同一級(jí)別的段

(..)(..)?匹配上面兩級(jí)的段

(...)?匹配根級(jí)別的段

通過(guò)這些模式,我們可以在應(yīng)用程序中的任何位置攔截路由。


結(jié)論

并行和攔截路由是 Next.js 中的高級(jí)路由機(jī)制,它們?cè)跇?gòu)建 Web 應(yīng)用程序時(shí)單獨(dú)提供增強(qiáng)的靈活性和改進(jìn)的用戶體驗(yàn)。然而,當(dāng)組合起來(lái)時(shí),它們提供了更高級(jí)的功能,如本文所示。

并行和攔截路由是 Next.js 中的高級(jí)路由機(jī)制,它們?cè)跇?gòu)建 Web 應(yīng)用程序時(shí)單獨(dú)提供增強(qiáng)的靈活性和改進(jìn)的用戶體驗(yàn)。然而,當(dāng)組合起來(lái)時(shí),它們提供了更高級(jí)的功能,如本文所示。







點(diǎn)贊(1) 打賞

評(píng)論列表 共有 0 條評(píng)論

暫無(wú)評(píng)論

服務(wù)號(hào)

訂閱號(hào)

備注【拉群】

商務(wù)洽談

微信聯(lián)系站長(zhǎng)

發(fā)表
評(píng)論
立即
投稿
返回
頂部
国产91在线观看_国产卡1卡2卡三卡在线_综合久久久久综合_99视频有精品高清视频

      日本三级免费网站| 免费一级特黄特色毛片久久看| 国产美女永久无遮挡| 国产精品jizz在线观看老狼| 污污的视频免费| 五月天激情视频在线观看| 1024av视频| 国产成人无码a区在线观看视频| av 日韩 人妻 黑人 综合 无码| 国产精品亚洲天堂| 永久免费看av| 成年在线观看视频| 999一区二区三区| 国产爆乳无码一区二区麻豆| 天堂8在线天堂资源bt| 和岳每晚弄的高潮嗷嗷叫视频| 精品国产av无码一区二区三区| 国产精品igao激情视频| 丁香六月激情网| 精品久久一二三| 日本www高清视频| www.99在线| 日韩成人av免费| 99re99热| 黄色特一级视频| 无码人妻丰满熟妇区96| 午夜免费精品视频| 国产欧美激情视频| 小泽玛利亚av在线| 欧美丰满熟妇bbbbbb百度| 99免费视频观看| 日本中文字幕观看| 欧美一级中文字幕| 干日本少妇首页| 国产三级三级看三级| 精产国品一二三区| 国产a级片网站| 成人在线激情网| 91丝袜超薄交口足| 亚洲人精品午夜射精日韩 | 欧美乱做爰xxxⅹ久久久| 国产精品无码人妻一区二区在线 | 国产视频1区2区3区| 亚洲欧美日韩一二三区| 欧美乱做爰xxxⅹ久久久| 日韩视频第二页| 激情文学亚洲色图| 日韩视频免费播放| 天天插天天操天天射| 黄色免费高清视频| 一区二区传媒有限公司| 五月婷婷六月丁香激情| 天天想你在线观看完整版电影免费| 国产一区二区视频播放| www.色就是色| www.亚洲成人网| 向日葵污视频在线观看| 阿v天堂2018| 中文字幕线观看| 成人中文字幕在线播放| 午夜激情视频网| 国产一区亚洲二区三区| 日本福利视频导航| 一区二区在线播放视频| 国内少妇毛片视频| 免费网站在线观看黄| 欧美日韩在线视频一区二区三区| 国产精品久久久久久久99| 欧美精品99久久| 最新视频 - x88av| 超碰在线97免费| 黄网站欧美内射| 亚洲欧美一区二区三区不卡| av无码精品一区二区三区| 男人天堂a在线| 亚洲第一天堂久久| 99久久激情视频| 欧美这里只有精品| 青青草原国产免费| 欧美美女一级片| 国产99久久九九精品无码| 中文字幕精品在线播放| 一起操在线视频| 亚洲人成色77777| 男人天堂av片| 午夜啪啪福利视频| 一本一道久久a久久综合蜜桃| 99久久久无码国产精品6| 欧美一二三不卡| 亚洲国产精品女人| 欧美一级小视频| 午夜视频你懂的| 日韩精品一区二区三区久久| avav在线播放| 台湾无码一区二区| 女同性恋一区二区| 手机在线视频你懂的| 性欧美在线视频| www.色就是色.com| 午夜国产福利在线观看| www.cao超碰| 性欧美1819| 亚洲免费av一区| 黄大色黄女片18第一次| 美女一区二区三区视频| 国产美女无遮挡网站| 国产一区二区视频播放| 久久久久久人妻一区二区三区| 欧美做暖暖视频| 日本黄色片一级片| 妞干网在线播放| 国产成人永久免费视频| 成人免费观看在线| 国产免费一区二区视频| 免费看欧美一级片| 日韩欧美视频免费在线观看| 欧美少妇一级片| 一级做a免费视频| 亚洲国产高清av| 一道本在线免费视频| 一级黄色特级片| 99九九99九九九99九他书对| 亚洲最大天堂网| 999热精品视频| 四虎影院一区二区| 免费看啪啪网站| 日本免费黄色小视频| 老司机激情视频| 国产日本在线播放| 91免费视频网站在线观看| 国产在线观看福利| 狠狠热免费视频| www,av在线| 日本a级片在线观看| 18禁裸男晨勃露j毛免费观看 | 奇米影音第四色| 欧美大片久久久| 日韩不卡视频一区二区| 成人毛片一区二区| 欧美日韩一区二区在线免费观看| 一区二区三区入口| 在线a免费观看| 女人帮男人橹视频播放| 亚洲中文字幕无码专区| 天天插天天操天天射| 日本美女久久久| 国产无限制自拍| 91热这里只有精品| 懂色av粉嫩av蜜臀av| 亚洲 欧美 日韩 国产综合 在线| 国产免费999| 久久久久亚洲av无码专区喷水| 久久亚洲中文字幕无码| 成人免费在线观看视频网站| 中文字幕第三区| 国产成人无码精品久久久性色| 日韩欧美国产片| 国产一区 在线播放| 久久九九国产视频| 国产日产欧美一区二区| 少妇性饥渴无码a区免费| 一级网站在线观看| aa在线观看视频| 国产精品自在自线| 欧美精品久久久久久久免费| www.com黄色片| 久久亚洲精品无码va白人极品| 三级a在线观看| 性一交一乱一伧国产女士spa| 国产成人亚洲精品无码h在线| 国产系列第一页| 国产成人无码一二三区视频| 国产精品无码乱伦| 九色在线视频观看| 亚洲av综合色区| 欧美特级aaa| 波多野结衣乳巨码无在线| 黄频视频在线观看| 999在线免费视频| 香港日本韩国三级网站| 99久久国产综合精品五月天喷水| 91人人澡人人爽人人精品| 97在线国产视频| 色中文字幕在线观看| 手机看片福利盒子久久| 国产欧美日韩小视频| 中文字幕55页| 亚洲三级视频网站| 国产午夜福利在线播放| 亚洲av综合色区| 天天综合成人网| 91极品尤物在线播放国产| www.av中文字幕| 喜爱夜蒲2在线| 黄色一级片免费播放| www.涩涩涩| 麻豆传传媒久久久爱| 日本中文字幕网址| 黄色一级片黄色| 成人性做爰片免费视频|