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

一個(gè)數(shù)據(jù)獲取竟被 React Query 玩出這么多花樣來(lái)!

開發(fā) 前端
值得注意的是,“緩存 5 秒鐘”并不是說(shuō)數(shù)據(jù)獲取后,過(guò) 5 秒鐘就刪掉了,而是說(shuō)查詢緩存在不活躍(inactive)或未使用(unused),5 秒鐘后數(shù)據(jù)就被垃圾回收器回收了。

本文是 React Query 系列第二篇,上一篇,我們概述了 React Query 是什么[1],以及它的 3 個(gè)核心概念,包括:

  1. 查詢(Queries)
  2. 修改(Mutations),和
  3. 作廢緩存(Query Invalidation)

本次,我們將深入第一個(gè)核心概念里的內(nèi)容——useQuery()。

useQuery() 是 React Query 對(duì)外提供一個(gè)用于封裝獲取數(shù)據(jù)請(qǐng)求的包裝 React Hook。

import { useQuery } from 'react-query'

function Example() {
  const { isLoading, isError, error, data } = useQuery('repoData', () =>
    fetch('https://api.github.com/repos/tannerlinsley/react-query').then(res =>
      res.json()
    )
  )

  if (isLoading) return 'Loading...'
  if (isError) return 'An error has occurred: ' + error.message

  return (
    <div>
      <h1>{data.name}</h1>
      <p>{data.description}</p>
      <strong>?? {data.subscribers_count}</strong>{' '}
      <strong>? {data.stargazers_count}</strong>{' '}
      <strong>?? {data.forks_count}</strong>
    </div>
  )
}

如你所見,useQuery 本身并不提供請(qǐng)求能力,而是依賴 Fetch API 或 axios 三方庫(kù)提供請(qǐng)求能力,useQuery() 做的就是提供響應(yīng)數(shù)據(jù)存儲(chǔ)和請(qǐng)求狀態(tài)包裝。

接下來(lái),我們就細(xì)細(xì)來(lái)看 useQuery() 的使用

useQuery() API

如果你有看到 useQuery() API 的官方定義[2],就會(huì)發(fā)現(xiàn)內(nèi)容非常多。

不過(guò),本文我們先只列最常用的一些。包括:

import { useQuery } from 'react-query'

const {
  data,
  error,
  isError,
  isFetching,
  isLoading,
  isRefetching,
  isSuccess,
  refetch,
} = useQuery(queryKey, queryFn?, {
  enabled,
  onError,
  onSuccess,
  refetchOnWindowFocus,
  retry,
  select,
  staleTime,
})

當(dāng)然,為了使用 useQuery(),我們還要通過(guò) QueryClientProvider 注入 QueryClient 實(shí)例。這部分也是樣板代碼:

import { QueryClient, QueryClientProvider, useQuery } from 'react-query'
import axios from 'axios'

const queryClient = new QueryClient()

export default function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <Example />
    </QueryClientProvider>
  )
}

useQuery() 有賴于 queryClient,這一步是必須的。

接下來(lái),我們要舉的案例都基于 <Example> 進(jìn)行編寫。開始吧!

基本案例

先來(lái)看一個(gè)最簡(jiǎn)單的例子。

function Example() {
  const { isLoading, isError, error, data } = useQuery(
    'http200',
    () => axios.get('https://httpstat.us/200?sleep=3000')
  )

  if (isLoading) return 'Loading...'
  if (isError) return 'An error has occurred: ' + error.message

  return (
    <div>
      <p>{ JSON.stringify(data.data) }</p>
    </div>
  )
}

查看效果(3秒 Loading,最后展示數(shù)據(jù)):

圖片圖片

圖片圖片

這是使用 useQuery() 的最小可運(yùn)行 DEMO 了。

錯(cuò)誤重試

當(dāng)然,useQuery() 還能攔截異常,我們將調(diào)用 URL 稍稍修改下。

const { isLoading, isError, error, data } = useQuery(
  'http500',
  () => axios.get('https://httpstat.us/500')
)

查看效果:

圖片圖片

你會(huì)看到 isLoading 狀態(tài)會(huì)維持一段時(shí)間。這是因?yàn)椋瑢?duì)于錯(cuò)誤響應(yīng),useQuery() 默認(rèn)會(huì)做重試。

查看控制臺(tái):

圖片圖片

圖片圖片

這里有 4 條一樣的請(qǐng)求。useQuery 自帶錯(cuò)誤重試(Retries)機(jī)制,默認(rèn) 3 次,加上原本的第 1 條,一共 4 條。

如果 4 次都失敗了,狀態(tài)就由 isLoading 變成 isError。

當(dāng)然,你是可以通過(guò) retry 選項(xiàng)自定義。

useQuery('http200', () => axios.get('https://httpstat.us/500'), { retry: 1 })

再來(lái)看看效果:

圖片圖片

重試 1 次失敗后,就直接報(bào)錯(cuò)了。

retry 還支持設(shè)置布爾值:true 表示無(wú)限重試,false 表示不做任何重試。

緩存數(shù)據(jù)

另外,在使用 useQuery() 時(shí),我們傳入的第一個(gè)參數(shù)是 Query Key。Query Key 是 React Query 內(nèi)部用來(lái)緩存獲取數(shù)據(jù)的唯一標(biāo)記,默認(rèn)會(huì)緩存 5 分鐘。

那么如何體現(xiàn)呢?我們可以通過(guò) useQuery() 做一次數(shù)據(jù)獲取。

function Example() {
  const { isLoading, isError, error, data, refetch } = useQuery(
    'http200',
    () => axios.get('https://httpstat.us/200?sleep=2000')
  )

  if (isLoading) return 'Loading...'
  if (isError) return 'An error has occurred: ' + error.message

  return (
    <div>
      <p>{ JSON.stringify(data.data) }</p>
      <button onClick={refetch}>refetch</button>
    </div>
  )
}

效果:

圖片圖片

會(huì)發(fā)現(xiàn),調(diào)用 refetch 的過(guò)程中,React Query 在控制臺(tái)強(qiáng)制發(fā)起了一個(gè)請(qǐng)求。

不過(guò)在這個(gè)階段,左側(cè)頁(yè)面的數(shù)據(jù)狀態(tài)沒(méi)有任何變動(dòng)——這是由于 React Query 在接受值為 'http200' 的 Query Key 時(shí),發(fā)現(xiàn)之前已經(jīng)緩存過(guò),所以就直接返回了緩存數(shù)據(jù)。

不過(guò),我們也是有辦法監(jiān)聽后臺(tái)發(fā)起的這種請(qǐng)求的狀態(tài)的,那就是通過(guò) useQuery() 返回的 isFetching 變量。

const { isLoading, isError, error, data, refetch, isFetching } = useQuery('http200', () => axios.get('https://httpstat.us/200?sleep=2000'))

再通過(guò) isFetching 控制按鈕狀態(tài)。

<button disabled={isFetching} notallow={refetch}>{ isFetching ? 'isFeching...' : 'refetch' }</button>

查看效果:

圖片圖片

這樣,我們就能監(jiān)聽后臺(tái)默默進(jìn)行的數(shù)據(jù)請(qǐng)求了。

當(dāng)然,數(shù)據(jù)緩存時(shí)間是可以通過(guò) cacheTime 選項(xiàng)自定義的(單位毫秒(ms))。

useQuery('http500', () => axios.get('https://httpstat.us/500'), { cacheTime: 10 * 60 * 1000 })

以上,我們將緩存時(shí)間設(shè)定成 10 分鐘。

默認(rèn)后臺(tái)數(shù)據(jù)的請(qǐng)求行為

useQuery() 還有一個(gè)默認(rèn)行為,非常便捷,就是在網(wǎng)頁(yè)從后臺(tái)重新切入或者重新聚焦時(shí),useQuery() 會(huì)自動(dòng)觸發(fā)后臺(tái)數(shù)據(jù)重新獲取。

圖片圖片

這個(gè)機(jī)制的原理是,React Query 會(huì)監(jiān)聽網(wǎng)頁(yè)的 visibilitychange 和 focus 事件,當(dāng) document.visibilityState 為 'visible' 或者觸發(fā) focus 事件時(shí),就會(huì)重新請(qǐng)求。

當(dāng)然,這個(gè)行為可以通過(guò) refetchOnWindowFocus 選項(xiàng)禁用掉。

useQuery(
  'http200',
  () => axios.get('https://httpstat.us/200'),
  { refetchOnWindowFocus: false }
)

注意,從 v5 版本開始,refetchOnWindowFocus 啟用時(shí)(默認(rèn)),不再監(jiān)聽 focus 事件[3],避免意外多出來(lái)的后臺(tái)請(qǐng)求[4]的發(fā)出。

過(guò)期時(shí)間

經(jīng)過(guò)以上的學(xué)習(xí),你可能會(huì)有疑問(wèn)——既然 React Query 有默認(rèn)幫我們緩存數(shù)據(jù),為什么在緩存數(shù)據(jù)有效期范圍內(nèi),還會(huì)發(fā)起新請(qǐng)求呢?

這就牽扯到另外一個(gè)概念,叫過(guò)期時(shí)間(Stale Time)。

useQuery() 默認(rèn)獲取到的數(shù)據(jù),被認(rèn)為是過(guò)期的。雖然重新獲取數(shù)據(jù)時(shí),會(huì)利用緩存數(shù)據(jù),但只是用于臨時(shí)展示,新請(qǐng)求獲得的數(shù)據(jù),會(huì)立即替代過(guò)期的緩存數(shù)據(jù)。

當(dāng)然,這個(gè)行為是可以通過(guò) staleTime 選項(xiàng)自定義(默認(rèn) staleTime: 0),其類型定義如下:

staleTime: number | Infinity

當(dāng)為數(shù)值時(shí),單位毫秒(ms),表示數(shù)據(jù)有效/新鮮期。當(dāng) staleTime 設(shè)置為 Infinity 時(shí),就表示數(shù)據(jù)永不過(guò)期。在緩存有效期范圍內(nèi),useQuery() 會(huì)始終使用緩存數(shù)據(jù),而不發(fā)起新的請(qǐng)求。

useQuery(
  'http200', 
  () => axios.get('https://httpstat.us/200'),
  { staleTime: Infinity }
)

這樣做之后,刷新頁(yè)面,在獲取到一次數(shù)據(jù)后,不管你如何重新切入/聚焦頁(yè)面,都沒(méi)有新的請(qǐng)求發(fā)出——這是因?yàn)閿?shù)據(jù)在有效期內(nèi),另外還有緩存,就直接返回了。

staleTime 與 cacheTime

不過(guò),staleTime 是如何與 cacheTime 配合起作用的呢?

我們?cè)倏匆粋€(gè)例子:

function Example() {
  const { isLoading, isError, error, data, refetch, isFetching } = useQuery('http200', () => axios.get('https://httpstat.us/200?sleep=2000'), { staleTime: Infinity, cacheTime: 5 * 1000})
  // ...
}

這里我們?cè)O(shè)置了數(shù)據(jù)永不過(guò)期,但緩存時(shí)間只有 5 秒鐘。不過(guò) 5 秒鐘過(guò)后,你重新切入頁(yè)面,發(fā)現(xiàn)還是沒(méi)有請(qǐng)求。為什么呢?

圖片圖片

這是因?yàn)椤熬彺?5 秒鐘”,并不是說(shuō)數(shù)據(jù)獲取后,過(guò) 5 秒鐘就刪掉了!“緩存 5 秒鐘”是指當(dāng)查詢緩存在不活躍或未使用,5 秒鐘后數(shù)據(jù)就會(huì)被垃圾回收器回收。

那么如何確定“useQuery 查詢的緩存是不活躍或未使用”的呢?很簡(jiǎn)單的一個(gè)場(chǎng)景,就是使用 useQuery('http200') 的這個(gè)組件被卸載了。

我們改動(dòng)下 App 組件。

export default function App() {
  const [display, setDisplay] = useState(true)

  return (
    // Provide the client to your App
    <QueryClientProvider client={queryClient}>
      <>
        <button onClick={() => setDisplay(!display)}>{ display ? 'hide' : 'show' }</button>
        { display && <Example /> }
      </>
    </QueryClientProvider>
  )
}

待 <Example /> 數(shù)據(jù)渲染完成后。

圖片圖片

我們?cè)賹?nbsp;<Example /> 銷毀,等 5 秒鐘再展示<Example /> ——雖然設(shè)置了數(shù)據(jù)永不過(guò)期,但緩存時(shí)間只有 5 秒鐘,現(xiàn)在緩存也沒(méi)有(被回收了),因此就會(huì)發(fā)現(xiàn)新請(qǐng)求出來(lái)了。

圖片圖片

正是因?yàn)?cacheTime 這個(gè)名稱會(huì)讓人產(chǎn)生歧義,因此從 v5 版本開始,`cacheTime` 選項(xiàng)改名[5]為更符合其含義的 gcTime 了。

總結(jié)

本文我們講解了 useQuery() API 的使用。

首先要知道的是,useQuery 本身并不提供請(qǐng)求能力,而是依賴 Fetch API 或 axios 三方庫(kù)提供請(qǐng)求能力,useQuery() 做的就是提供響應(yīng)數(shù)據(jù)存儲(chǔ)和請(qǐng)求狀態(tài)的包裝。

在講解了 useQuery() 基礎(chǔ)使用后,我們介紹了圍繞 useQuery() API 的一些核心內(nèi)容,包括:

  1. 錯(cuò)誤重試(Retries)機(jī)制:默認(rèn) 3 次
  2. 數(shù)據(jù)緩存(Query Key):默認(rèn) 5 分鐘
  3. 過(guò)期時(shí)間(Stale Time):默認(rèn)即過(guò)期

最后 staleTime 與 cacheTime 之間的區(qū)別是:staleTime 決定數(shù)據(jù)的新鮮度,cacheTime 則用于指定緩存數(shù)據(jù)。

值得注意的是,“緩存 5 秒鐘”并不是說(shuō)數(shù)據(jù)獲取后,過(guò) 5 秒鐘就刪掉了,而是說(shuō)查詢緩存在不活躍(inactive)或未使用(unused),5 秒鐘后數(shù)據(jù)就被垃圾回收器回收了。

當(dāng)然限于篇幅,useQuery() 還有內(nèi)容沒(méi)講,這個(gè)我們留在下次再說(shuō)。

好了,希望本文的講解能夠?qū)δ阌兴鶐椭?。感謝閱讀,再見。

參考資料

[1]概述了 React Query 是什么: https://juejin.cn/post/7378015213348257855

[2]官方定義: https://tanstack.com/query/v3/docs/framework/react/reference/useQuery

[3]不再監(jiān)聽 focus 事件: https://tanstack.com/query/v5/docs/framework/react/guides/migrating-to-v5#window-focus-refetching-no-longer-listens-to-the-focus-event

[4]意外多出來(lái)的后臺(tái)請(qǐng)求: https://github.com/TanStack/query/pull/4805

[5]cacheTime 選項(xiàng)改名: https://tanstack.com/query/v5/docs/framework/react/guides/migrating-to-v5#rename-cachetime-to-gctime

責(zé)任編輯:武曉燕 來(lái)源: 寫代碼的寶哥
相關(guān)推薦

2021-01-19 05:29:41

代碼Git 工作流

2021-03-26 10:48:14

代碼語(yǔ)言提交

2021-10-11 08:21:23

@Valuespringspring框架

2022-01-25 12:14:39

面試try-catch代碼

2021-09-01 05:41:03

Promise CLI項(xiàng)目

2022-09-14 12:00:51

React路由庫(kù)前端

2024-05-16 20:48:23

ReactReact 19React 編譯器

2021-09-28 12:25:30

數(shù)據(jù)庫(kù)

2021-06-11 06:45:32

SQL結(jié)構(gòu)化語(yǔ)言

2022-05-09 08:01:23

countdistinctMySQL

2022-09-27 10:52:25

Pythonprint函數(shù)

2022-09-21 10:45:42

局域網(wǎng)Mesh網(wǎng)絡(luò)結(jié)構(gòu)

2021-05-27 07:54:21

JavaStateAQS

2017-06-19 08:30:35

大數(shù)據(jù)數(shù)據(jù)可視化報(bào)表

2018-12-11 12:58:20

CPU散熱器鰭片

2018-06-08 16:48:09

PythonQQ機(jī)器人

2025-03-28 10:39:17

C++宏定義語(yǔ)言

2021-11-10 15:39:40

手機(jī)旗艦機(jī)中端機(jī)

2019-11-26 14:11:52

互聯(lián)網(wǎng)裁員員工
點(diǎn)贊
收藏

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

午夜在线视频一区二区区别| 999国产在线| 国产精品日韩欧美一区二区三区 | 99久热re在线精品996热视频| 国产一级伦理片| 国产精品高清无码| 精品国产午夜肉伦伦影院| 国产精品水嫩水嫩| 欧美在线视频观看免费网站| 国产乱国产乱老熟300部视频| аⅴ资源新版在线天堂| 国产成人精品福利| 亚洲天堂成人网| 国产精品jizz在线观看麻豆| 麻豆国产精品一区| 两个人看的在线视频www| 国产一区二区美女诱惑| 国产一区二区三区黄| 久久影院模特热| 99爱视频在线| 欧美熟妇交换久久久久久分类| 国产一区二区四区| 国产精品一区二区欧美黑人喷潮水| 国产成人免费在线观看视频| 免费不卡视频| 天堂一区二区在线| 亚洲免费电影在线观看| 激情深爱综合网| 欧美一级视频免费| 青草国产精品久久久久久| 亚洲美女在线看| 国内av一区二区| 国产精品实拍| 国产精品一区三区| 久久久久久有精品国产| 久久发布国产伦子伦精品| 黄色网在线免费观看| av日韩在线网站| 高清欧美性猛交xxxx黑人猛交| 日本泡妞xxxx免费视频软件| 亚洲日本在线观看视频| 亚洲国产岛国毛片在线| 精品欧美日韩在线| 中文字幕高清在线免费播放| 欧美男gay| 欧美午夜寂寞影院| www.午夜色| 午夜精品久久久久久久99热黄桃| 狠狠干综合网| 精品一区二区三区四区| 天天色综合天天色| 黄色在线视频网站| 国产精品私人影院| 午夜欧美性电影| 国产精品污视频| 激情综合视频| 亚洲欧美制服丝袜| 成人性生交免费看| 国内在线免费视频| 久久综合色播五月| 国产精品www网站| 极品魔鬼身材女神啪啪精品| julia中文字幕一区二区99在线| 精品久久香蕉国产线看观看gif| 鲁丝一区二区三区免费| 久草热在线观看| 日韩精品福利网| 欧美精品情趣视频| 扒开jk护士狂揉免费| 啪啪av大全导航福利综合导航| 一区二区成人在线视频| 欧美一区二区三区成人久久片| 一级黄色a视频| 在线日本高清免费不卡| 在线成人中文字幕| 亚洲成a人无码| 久久久人成影片一区二区三区在哪下载 | 亚洲熟妇无码另类久久久| av在线播放资源| 久久久精品人体av艺术| 91色在线观看| 免费看日批视频| 日韩高清不卡一区二区| 国产精品免费视频久久久| 欧美成人一区二区三区高清| 蜜臀av免费一区二区三区| 亚洲免费av电影| а天堂中文在线资源| 91精品综合| 亚洲人成在线一二| 免费看的黄色录像| 日本成人7777| 欧美精品在线一区二区三区| 男人日女人bb视频| 成人精品国产亚洲| 欧美性猛交xxxx富婆弯腰| 超碰超碰超碰超碰超碰| 天天摸天天舔天天操| 在线免费观看一区二区| 秋霞av亚洲一区二区三| 国产精品久久久久久久久久久久| 中文字幕+乱码+中文| 欧美亚洲大陆| 国产午夜一区二区| 337p日本欧洲亚洲大胆张筱雨| 欧美黄色a视频| 亚洲免费在线播放| 粉嫩高清一区二区三区精品视频| 日本免费在线观看视频| 另类小说综合欧美亚洲| 欧美在线亚洲在线| 国产一区二区三区三州| 日韩av一级片| 97超级碰碰| 草草影院在线观看| 午夜视频一区在线观看| 免费人成自慰网站| 制服诱惑亚洲| 亚洲精品一区二区三区99| 在线a免费观看| www 久久久| 精品一区二区三区不卡| 亚洲欧美激情小说另类| 日韩一二区视频| 另类图片综合电影| 成人a在线观看高清电影| 91精品国产色综合久久不卡蜜臀 | 国产日韩欧美电影在线观看| 男操女视频网站| 日韩成人一区二区| 国产视频在线观看一区| 国产激情在线| 亚洲欧美另类久久久精品| 亚洲色成人一区二区三区小说| 久久国产精品美女| 欧美成人video| 91视频在线免费| 免费福利视频一区| 欧美激情一二三| 国产999久久久| 成人激情av网| 欧美精品一区二区三区四区五区| 人成在线免费视频| 国产精品午夜电影| 欧美极品欧美精品欧美图片| 日韩一区二区三区在线免费观看| 亚洲国产天堂久久综合网| 日韩精品在线视频美女| 不卡av免费在线| 韩国成人在线| 亚洲无人区码一码二码三码| 日本免费一二三区| 丁香婷婷成人| 久久激情视频久久| 日本黄色录像视频| 久久九九免费| 欧美亚洲视频在线看网址| 一区二区三区四区不卡| 久久99久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区精品在线| 久草资源在线| 欧美性生活一区| 青青草福利视频| 亚洲女同一区| 日韩欧美亚洲成人| 特黄视频免费观看| 日本一区二区高清不卡| 国产亚洲网站| 欧美激情欧美狂野欧美精品| 久久婷婷一区二区| 久久久久久久高潮| 久久久精品国产一区二区三区| 黄色片在线播放| 午夜伊人狠狠久久| 美女久久久久久久久久| 在线视频精品| 成人黄色av网| 国产综合视频在线| 久久精品一区二区三区不卡| 成人免费aaa| 99只有精品| 日韩中文字幕在线免费观看| 国产精品成人网站| 麻豆国产精品官网| 日韩免费av电影| 免费在线看电影| 欧美在线free| 中文天堂资源在线| 亚洲天堂偷拍| 国产高清一区视频| 美女视频在线免费| 亚洲最大中文字幕| 中文字幕一级片| 综合亚洲深深色噜噜狠狠网站| 久久精品免费一区二区| 一本色道久久综合亚洲精品酒店| 久久成人综合视频| 黑人乱码一区二区三区av| 欧美日韩国产精品一区| 中文字幕 欧美 日韩| 99国产精品99久久久久久粉嫩| 欧美成人一区二区在线| 日本免费一区二区三区等视频| 麻豆成人在线看| 四虎影视2018在线播放alocalhost| 亚洲免费观看在线视频| 中文字幕 日本| 免费在线看成人av| 日本在线观看不卡| 日韩在线不卡一区| 自拍亚洲图区| 动漫精品一区二区| 一级在线观看视频| 丁香啪啪综合成人亚洲小说| 日本高清久久一区二区三区| 91国拍精品国产粉嫩亚洲一区 | 国产美女主播在线观看| 91在线播放网址| 欧美黄色免费网址| 国产一区二区三区免费在线| 国产午夜精品美女视频明星a级| 在线观看黄色国产| 欧美日韩国产区| 午夜三级在线观看| 91网站黄www| 网站在线你懂的| 蜜乳av另类精品一区二区| 浴室偷拍美女洗澡456在线| 亚洲精品第一| 国模gogo一区二区大胆私拍| av在线日韩国产精品| 亚洲国产精品人久久电影| 91久久久久国产一区二区| 欧美日韩亚洲激情| 久久一二三四区| 中文字幕制服丝袜一区二区三区| 我要看一级黄色大片| 亚洲视频免费| 浴室偷拍美女洗澡456在线| 精品久久国产| 国产日韩在线视频| 亚洲少妇视频| 在线性视频日韩欧美| 一区二区不卡视频在线观看| 欧美日韩一区二区免费视频| 暗呦丨小u女国产精品| 国产嫩草影院久久久久| 欧美三级午夜理伦三级富婆| 99热免费精品在线观看| 国产一线二线三线女| 欧美精品偷拍| 国产呦系列欧美呦日韩呦| 精品国产一区二区三区性色av | 国产成人免费看| 中文字幕免费不卡| 高清国产在线观看| 国产精品亚洲专一区二区三区 | 免费黄色在线| 色午夜这里只有精品| 国产乱码久久久| 欧美区视频在线观看| 国产精品成人久久| 亚洲永久免费视频| 国产大学生自拍| 亚洲精品免费播放| 女尊高h男高潮呻吟| 99麻豆久久久国产精品免费优播| 91超薄肉色丝袜交足高跟凉鞋| 国产精品一品二品| 免费a v网站| 99久久精品国产网站| 中文字幕一区二区三区人妻不卡| 久久免费看少妇高潮| 天堂在线中文视频| 国产精品免费视频一区| 日韩黄色一区二区| 成人美女视频在线观看18| 性感美女一区二区三区| 成人v精品蜜桃久久一区| 在线精品视频播放| 99视频一区| 欧美超级免费视 在线| 超碰免费97在线观看| 久久久av网站| 成人影院在线观看| 欧美交受高潮1| 激情黄产视频在线免费观看| 精品国产自在久精品国产| 亚洲国产精品视频在线| 一本大道久久a久久精二百| 爱爱爱爱免费视频| 日韩精品免费专区| 少妇一级淫免费放| 国产精品亚洲专一区二区三区 | 免费在线成人激情电影| 国产日韩精品一区二区| 亚洲福利影片在线| 日韩一区二区a片免费观看| 精品一区二区三区免费观看| 天天色天天干天天色| 蜜桃视频在线观看一区二区| 毛毛毛毛毛毛毛片123| 久久影院视频免费| 欧美丰满艳妇bbwbbw| 在线视频综合导航| 国产一级免费视频| 欧美精品黑人性xxxx| 欧美视频在线观看一区二区三区| 国产亚洲欧美视频| a级片免费在线观看| 国产精品揄拍500视频| 色成人免费网站| 99视频在线免费观看| 色综合天天综合网中文字幕| 久久视频这里有精品| 国产尤物一区二区在线| 日本性高潮视频| 亚洲国产精品影院| 久草国产精品视频| 精品久久久一区| 国产精品高潮呻吟久久久| 亚洲女人被黑人巨大进入al| 欧美24videosex性欧美| 成人精品视频99在线观看免费| 精品99在线| 国内性生活视频| 粉嫩久久99精品久久久久久夜| 亚洲一区二区偷拍| 国产欧美日韩一区二区三区在线观看| 日本网站免费观看| 日韩欧美资源站| 亚洲av综合色区无码一二三区 | 爱爱的免费视频| 亚洲国产精品影院| 亚洲女同志亚洲女同女播放| 美女国内精品自产拍在线播放| 成人在线中文| 亚洲国产精品www| 91精品国产乱码久久久久久久| 日韩一级片播放| 国产一区二区三区免费观看| 一级特黄曰皮片视频| 91成人免费在线| 国产一区二区影视| 国产精品扒开腿做| 成人女性视频| 国产色一区二区三区| 久久午夜av| 国产精品密蕾丝袜| 在线观看av一区二区| 爱爱爱免费视频在线观看| 国产精品视频中文字幕91| 成人在线电影在线观看视频| 亚洲福利精品视频| 国产精品国产三级国产有无不卡 | 粉嫩av一区二区三区在线播放| 激情五月婷婷小说| 91精品办公室少妇高潮对白| 国产成人久久精品77777综合 | 97人澡人人添人人爽欧美| 国产亚洲精品美女久久久m| 国产视频亚洲| 亚洲精品午夜视频| 精品视频在线视频| 婷婷五月综合久久中文字幕| 中文字幕日韩欧美在线| 国产第一精品| 91传媒免费视频| 91欧美激情一区二区三区成人| 精品国产一区二区三区四| 有码中文亚洲精品| 人人九九精品视频| 亚洲欧洲三级| 国产精品一区免费视频| 激情综合五月网| 国产视频精品久久久| 电影一区电影二区| 国产一级片91| 久久久久久久av麻豆果冻| 亚洲字幕av一区二区三区四区| 欧美伦理91i| 亚洲综合资源| 99色这里只有精品| 日本一区二区免费在线| www.黄色av| 日韩暖暖在线视频| 欧美三级电影在线| 久热精品在线观看视频| 亚洲一区二区在线播放相泽| 91麻豆国产视频| 91精品国产91久久久久| heyzo欧美激情| 欧美成人精品欧美一级乱| 不卡av电影在线播放| 久久精品国产亚洲av麻豆蜜芽| 欧美美女15p| 精品国产乱码久久久| 日韩av成人网| 欧美视频中文一区二区三区在线观看 |