国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

ahooks?useRequest源碼精讀解析

 更新時間:2022年07月11日 11:54:16   作者:echolc55873  
這篇文章主要為大家介紹了ahooks?useRequest的源碼精讀解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

自從 React v16.8 推出了 Hooks API,前端框架圈并開啟了新的邏輯復用的時代,不再需要在意 HOC 的無限套娃導致性能差的問題,也解決了 mixin 的可閱讀性差的問題。當然對于 React 最大的變化是函數(shù)式組件可以有自己的狀態(tài),扁平化的邏輯組織方式,更加友好地支持 TS 類型聲明。

除了 React 官方提供的一些 Hooks,也支持我們能根據(jù)自己的業(yè)務場景自定義 Hooks,還有一些通用的 Hooks,例如用于請求的 useRequest,用于定時器的 useTimeout,用于節(jié)流的 useThrottle 等。于是出現(xiàn)了大量的 Hooks 庫,ahooks 是其中比較受歡迎的 Hooks 庫之一,其提供了大量的 Hooks,基本滿足了大多數(shù)場景的需求。又是國人開發(fā),中文文檔友好,在我們團隊的一些項目中就使用了 ahooks。

其中最常用的 hooks 就是 useRequest,用于從后端請求數(shù)據(jù)的業(yè)務場景,除了簡單的數(shù)據(jù)請求,它還支持:

  • 輪詢
  • 防抖和節(jié)流
  • 錯誤重試
  • SWR(stale-while-revalidate)
  • 緩存

等功能,基本上滿足了我們請求后端數(shù)據(jù)需要考慮的大多數(shù)場景,當然還有 loading-delay、頁面 foucs 重新刷新數(shù)據(jù)等這些功能,但是個人理解上面列的功能才是使用比較頻繁的功能點。

一個 Hooks 實現(xiàn)這么多功能,我還是對其內(nèi)部的實現(xiàn)比較好奇的,所以本文就從源碼的角度帶大家了解 useRequest 的實現(xiàn)。

架構圖

我們從一張圖開始了解其模塊設計,對于一個功能復雜的 API,如果不使用合適的架構和方式組織代碼,其擴展性和可維護性肯定比較差。功能點實現(xiàn)和核心代碼混在一起,閱讀代碼的人也無從下手,也帶來更大的測試難度。雖然 useRequest 只是一個 Hook,但是實際上其設計還是有清晰的架構,我們來看看 useRequest 的架構圖:

我把 useRequest 的模塊劃分為三大塊:Core、Plugins、utils,然后 useRequest 將這些模塊組合在一起實現(xiàn)核心功能。

先看插件部分,看到每個插件的命名,如果了解 useRequest 的功能就會發(fā)現(xiàn),基本上每個功能點對應一個插件。這也是 useRequest 設計比較巧妙的一點,通過插件化機制降低了每個功能之間的耦合度,也降低了其本身的復雜度。這些點我們在分析具體的源碼的時候會再詳細介紹。

另外一部分核心的代碼我將其歸類為 Core(在 useRequest 的源碼中沒有這個名詞),主要實現(xiàn)了一個 Fetch 類,這個類是 useRequest 的插件化機制實現(xiàn)和其它功能的核心實現(xiàn)。

下面我們深入源碼,看下其實現(xiàn)原理。

源碼解析

先看 Core 部分的源碼,主要是 Fetch 這個類的實現(xiàn)。

Fetch

先貼代碼:

export default class Fetch<TData, TParams extends any[]> {
  pluginImpls: PluginReturn<TData, TParams>[];
  count: number = 0;
  state: FetchState<TData, TParams> = {
    loading: false,
    params: undefined,
    data: undefined,
    error: undefined,
  };
  constructor(
    public serviceRef: MutableRefObject<Service<TData, TParams>>,
    public options: Options<TData, TParams>,
    public subscribe: Subscribe,
    public initState: Partial<FetchState<TData, TParams>> = {},
  ) {
    this.state = {
      ...this.state,
      loading: !options.manual,
      ...initState,
    };
  }
  setState(s: Partial<FetchState<TData, TParams>> = {}) {
    // 省略一些代碼
  }
  runPluginHandler(event: keyof PluginReturn<TData, TParams>, ...rest: any[]) {
    // 省略一些代碼
  }
  async runAsync(...params: TParams): Promise<TData> {
    // 省略一些代碼
  }
  run(...params: TParams) {
    // 省略一些代碼
  }
  cancel() {
    // 省略一些代碼
  }
  refresh() {
    // 省略一些代碼
  }
  refreshAsync() {
    // 省略一些代碼
  }
  mutate(data?: TData | ((oldData?: TData) => TData | undefined)) {
    // 省略一些代碼
  }
}

Fetch 類 API 的設計還是比較簡潔的,而且也不是特別多,實際上有些 API 就是直接從 useRequest 暴露給外部用戶使用的,比如 run、runAsync、cancel、refresh、refreshAsync、mutate 等。像 runPluginHandler、setState 等 API 主要是給內(nèi)部用的 API,不過它也沒有做區(qū)分,從封裝的角度上來說,這一點個人感覺設計得不夠好。

重點關注下幾個 Fetch 類的屬性,一個是 state,它的類型是 FetchState<TData, TParams>,一個是 pluginImpls,它是 PluginReturn<TData, TParams> 數(shù)組,實際上這個屬性就用來存所有插件執(zhí)行后返回的結果。還有一個 count 屬性,是 number 類型,不看具體源碼,完全不知道這個屬性是做什么用的。這點也是 useRequest 開發(fā)者做得感覺不是很好的地方,很少有注釋,純靠閱讀者深入到源碼,去看使用的地方,才能知道一些方法和屬性的作用。

那我們先來看下 FetchState<TData, TParams> 的定義,它定義在 src/type.ts 里面:

export interface FetchState<TData, TParams extends any[]> {
  loading: boolean;
  params?: TParams;
  data?: TData;
  error?: Error;
}

它的定義還是比較簡單,看起來是存一個請求結果的上下文信息,這些信息其實都是需要暴露給外部用戶的,例如 loading、data、errors 等不就是我們使用 useRequest 經(jīng)常需要拿到的數(shù)據(jù)信息:

const { data, error, loading } = useRequest(service);

而對應的 Fetch 封裝了 setState API,實際上就是用來更新 state 的數(shù)據(jù):

setState(s: Partial&lt;FetchState&lt;TData, TParams&gt;&gt; = {}) {
    this.state = {
      ...this.state,
      ...s,
    };
  	// ? 未知
    this.subscribe();
  }

除了更新 state,這里還調(diào)用了一個 subscribe 方法,這是初始化 Fetch 類的時候傳進來的一個參數(shù),它的類型是 Subscribe,等后面將到調(diào)用的地方再看這個方法是怎么實現(xiàn)的,以及它的作用。

再看下 PluginReturn<TData, TParams> 的類型定義:

export interface PluginReturn<TData, TParams extends any[]> {
  onBefore?: (params: TParams) =>
    | ({
        stopNow?: boolean;
        returnNow?: boolean;
      } & Partial<FetchState<TData, TParams>>)
    | void;
  onRequest?: (
    service: Service<TData, TParams>,
    params: TParams,
  ) => {
    servicePromise?: Promise<TData>;
  };
  onSuccess?: (data: TData, params: TParams) => void;
  onError?: (e: Error, params: TParams) => void;
  onFinally?: (params: TParams, data?: TData, e?: Error) => void;
  onCancel?: () => void;
  onMutate?: (data: TData) => void;
}

實際上都是一些回調(diào)鉤子,從名字對應上來看,對應了請求的各個階段,除了 onMutate 是其內(nèi)部擴展的一個鉤子。

也就是說 pluginImpls 里面存的是一堆含有各個鉤子函數(shù)的對象集合,如果技術敏銳的同學,可能很容易就想到發(fā)布訂閱模式,這不就是存了一系列的 subscribe 回調(diào),這不過這是一個回調(diào)的集合,里面有各種不同請求階段的回調(diào)。那么到底是不是這樣,我們繼續(xù)往下看。

要搞清楚 Fetch 的運作方式,我們需要看兩個核心 API 的實現(xiàn):runPluginHandlerrunAsync,其它所有的 API 實際上都在調(diào)用這兩個 API,然后做一些額外的特殊邏輯處理。

先看 runPluginHandler

runPluginHandler(event: keyof PluginReturn<TData, TParams>, ...rest: any[]) {
	// @ts-ignore
  const r = this.pluginImpls.map((i) => i[event]?.(...rest)).filter(Boolean);
  return Object.assign({}, ...r);
}

這個方法實現(xiàn)還是比較簡單,只有兩行代碼。跟我們之前猜測的大致差不多,這個方法就是接收一個 event 參數(shù),它的類型就是 keyof PluginReturn<TData, TParams>,也就是:onBefore | onRequest | onSuccess | onError | onFinally | onCancel | onMutate 的聯(lián)合類型,以及其它額外的參數(shù),然后從 pluginImpls 中找出所有對應的 event 回調(diào)鉤子函數(shù),然后執(zhí)行回調(diào)函數(shù),拿到結果并返回。

再看 runAsync 的實現(xiàn):

async runAsync(...params: TParams): Promise<TData> {
    this.count += 1;
    const currentCount = this.count;
    const {
      stopNow = false,
      returnNow = false,
      ...state
    } = this.runPluginHandler('onBefore', params);
    // stop request
    if (stopNow) {
      return new Promise(() => {});
    }
    this.setState({
      loading: true,
      params,
      ...state,
    });
    // return now
    if (returnNow) {
      return Promise.resolve(state.data);
    }
    this.options.onBefore?.(params);
    try {
      // replace service
      let { servicePromise } = this.runPluginHandler('onRequest', this.serviceRef.current, params);
      if (!servicePromise) {
        servicePromise = this.serviceRef.current(...params);
      }
      const res = await servicePromise;
      if (currentCount !== this.count) {
        // prevent run.then when request is canceled
        return new Promise(() => {});
      }
      // const formattedResult = this.options.formatResultRef.current ? this.options.formatResultRef.current(res) : res;
      this.setState({
        data: res,
        error: undefined,
        loading: false,
      });
      this.options.onSuccess?.(res, params);
      this.runPluginHandler('onSuccess', res, params);
      this.options.onFinally?.(params, res, undefined);
      if (currentCount === this.count) {
        this.runPluginHandler('onFinally', params, res, undefined);
      }
      return res;
    } catch (error) {
      if (currentCount !== this.count) {
        // prevent run.then when request is canceled
        return new Promise(() => {});
      }
      this.setState({
        error,
        loading: false,
      });
      this.options.onError?.(error, params);
      this.runPluginHandler('onError', error, params);
      this.options.onFinally?.(params, undefined, error);
      if (currentCount === this.count) {
        this.runPluginHandler('onFinally', params, undefined, error);
      }
      throw error;
    }
  }

看著代碼挺多的,其實看下來很好理解。 這個函數(shù)實際上做的事就是調(diào)用我們傳入的獲取數(shù)據(jù)的方法,然后拿到成功或者失敗的結果,進行一系列的數(shù)據(jù)處理,然后更新到 state,執(zhí)行插件的各回調(diào)鉤子,還有就是我們通過 options 傳入的回調(diào)函數(shù)。

可能直接用文字直接描述比較抽象,下面我們分請求階段分析代碼。

首先前兩行是對 count 屬性的累加處理,之前我們不知道這個屬性的作用,看到這里可能猜測大概是跟請求相關的,后面看到 currentCount 的使用的地方,我們再說。

onBefore

接下來 5~27 行實際上是對 onBefore 回調(diào)鉤子的執(zhí)行,然后拿到結果做的一些邏輯處理。這里調(diào)用的就是 runPluginHandler 方法,傳入的參數(shù)是 onBefore 和外部用戶定義的 params 參數(shù)。然后執(zhí)行完所有的 onBefore 鉤子函數(shù),拿到最后的結果,如果 stopNow 的 flag 是 true,則直接返回沒有結果的 Promise??醋⑨?,我們知道這里實際上做的是取消請求的處理,當我們在 onBefore 的鉤子里實現(xiàn)了取消的邏輯,符合條件后并會真正的阻斷請求。

如果沒有取消,然后接著更新 state 數(shù)據(jù),如果立即返回的 returnNow flag 為 true,則立馬將更新后的 state 返回,否則執(zhí)行用戶傳入的 options 中的 onBefore 回調(diào),也就是說在調(diào)用 useRequest 的時候,我們可以通過 options 參數(shù)傳入 onBefore 函數(shù),進行請求之前的一些邏輯處理。

onRequest

接下來后面的代碼就是真正執(zhí)行請求數(shù)據(jù)的方法了,這里就會執(zhí)行所有的 onRequest 鉤子。實際上,通過 onRequest 鉤子我們是可以重寫傳入的獲取數(shù)據(jù)的方法,因為最后執(zhí)行的是 onRequest 回調(diào)返回的 servicePromise。

拿到最后執(zhí)行的請求數(shù)據(jù)方法,就開始發(fā)起請求。在這里發(fā)現(xiàn)了前面的 currentCount 的使用,它會去對比當前最新的 count 和執(zhí)行這個方法時定義的 currentCount 是否相等,如果不相等,則會做類似于取消請求的處理。這里大概知道 count 的作用類似于一個”鎖“的作用,我的理解是,如果在執(zhí)行這些代碼過程有產(chǎn)生一些比這里優(yōu)先級更高的處理邏輯或者請求操作,是需要 cancel 掉這次的請求,以最新的請求為準。當然,最后還是要看哪些地方可能會修改 count。

onSuccess

執(zhí)行完請求后,如果請求成功,則拿到請求返回的數(shù)據(jù),更新到 state,執(zhí)行用戶傳入的成功回調(diào)和各插件的成功回調(diào)鉤子。

onFinally

成功之后,執(zhí)行 onFinally 鉤子,這里也很嚴謹,也會比較 count 的值,確保一致之后,才會執(zhí)行各插件的回調(diào)鉤子,預發(fā)一些”競態(tài)“情況的發(fā)生。

onError

如果請求失敗,就會進入到 catch 分支,執(zhí)行一些處理錯誤的邏輯,更新 error 信息到 state 中。同樣這里也會有 count 的對比,然后執(zhí)行 onError 的回調(diào)。執(zhí)行完 onError 也會同樣執(zhí)行 onFinally 的回調(diào),因為一個請求要么成功,要么失敗,都會需要執(zhí)行最后的 onFinally 回調(diào)。

其它 API

其它的例如 run、cancel、refresh 等 API,實際上調(diào)用的是 runPluginHandlerrunAsync API,例如 run:

run(...params: TParams) {
    this.runAsync(...params).catch((error) => {
      if (!this.options.onError) {
        console.error(error);
      }
    });
  }

代碼很容易看懂,就不過多介紹。

我們來看看 cancel 的實現(xiàn):

cancel() {
    this.count += 1;
    this.setState({
      loading: false,
    });
    this.runPluginHandler('onCancel');
  }

最后的 runPluginHandler 調(diào)用我們已經(jīng)很清楚它的作用了,這里值得注意的是對 count 的修改。前面我們提到每次 runAsync 一些核心階段會判斷 count 是否和 currentCount 能對得上,看到這里我們就徹底明白了 count 的作用了。實際上在我們執(zhí)行了 run 的操作,如果在本次 runAsync 方法執(zhí)行過程中,我們就調(diào)用了 cancel 方法,那么無論是在請求發(fā)起前還是后,都會把本次執(zhí)行當做 cancel 處理,返回空的數(shù)據(jù)。也就是說,這個 count 就是為了實現(xiàn)請求取消功能的一個標識。

小結

看完了 runAsync 的實現(xiàn),實際上就代表我們看完了 Fetch 的核心邏輯。從一個請求的生命周期角度來看,其實它的實現(xiàn)就很容易理解,主要做兩件事:

  • 執(zhí)行各階段的鉤子回調(diào);
  • 更新數(shù)據(jù)到 state。

這歸功于 useRequest 的巧妙設計,我們看這部分源碼,只要看懂了類型和兩個核心的方法,都不用關心具體每個插件的實現(xiàn)。它將每個功能點的復雜度和核心的邏輯通過插件機制隔離開來,從而每個插件只需要按一定的契約實現(xiàn)好自己的功能就行,然后 Fetch 不管有多少插件,只負責在合適的時間點調(diào)用插件鉤子,做到了完全的解耦。

plugins

其實看完了 Fetch,還沒看插件,你腦子里就大概知道怎么去實現(xiàn)一個插件。因為插件比較多,限于篇幅原因,這里就以 usePollingPlugin 和 useRetryPlugin 兩個插件為例,進行詳細的源碼介紹。

usePollingPlugin

首先需要清楚一點每個插件實際也是一個 Hook,所以在它內(nèi)部可以使用任何 Hook 的功能或者調(diào)用其它 Hook。先看 usePollingPlugin:

const usePollingPlugin: Plugin<any, any[]> = (
  fetchInstance,
  { pollingInterval, pollingWhenHidden = true },
) => {
  const timerRef = useRef<NodeJS.Timeout>();
  const unsubscribeRef = useRef<() => void>();
  const stopPolling = () => {
    if (timerRef.current) {
      clearTimeout(timerRef.current);
    }
    unsubscribeRef.current?.();
  };
  useUpdateEffect(() => {
    if (!pollingInterval) {
      stopPolling();
    }
  }, [pollingInterval]);
  if (!pollingInterval) {
    return {};
  }
  return {
    onBefore: () => {
      stopPolling();
    },
    onFinally: () => {
      // if pollingWhenHidden = false && document is hidden, then stop polling and subscribe revisible
      if (!pollingWhenHidden && !isDocumentVisible()) {
        unsubscribeRef.current = subscribeReVisible(() => {
          fetchInstance.refresh();
        });
        return;
      }
      timerRef.current = setTimeout(() => {
        fetchInstance.refresh();
      }, pollingInterval);
    },
    onCancel: () => {
      stopPolling();
    },
  };
};

它接受兩個參數(shù),一個是 fetchInstance,也就是前面提到的 Fetch 實例,第二個參數(shù)是 options,支持傳入 pollingInterval、pollingWhenHidden 兩個屬性。這兩個屬性從命名上比較容易理解,一個就是輪詢的時間間隔,另外一個猜測應該是可以在某種場景下通過設置這個 flag 停止輪詢。在真實的場景中,確實有比如要求用戶在切換到其它 tab 頁時停止輪詢等這樣的需求。所以這個配置,還比較好理解。

而每個插件的作用就是在請求的各個階段進行定制化的邏輯處理,以輪詢?yōu)槔?,其最核心的邏輯在?onFinally 的回調(diào),在每次請求結束后,設置一個 setTimeout,然后按用戶傳入的 pollingInterval 進行定時執(zhí)行 Fetch 的 refresh 方法。

還有就是停止輪詢的時機,每次用戶主動取消請求,在 onCancel 的回調(diào)停止輪詢。如果已經(jīng)開始了輪詢,在每次新的請求調(diào)用的時候先停止上一次的輪詢,避免重復。當然包括,如果組件修改了 pollingInterval 等的時候,需要先停止掉之前的輪詢。

useRetryPlugin

假設讓你去設計一個 retry 的插件,那么你的設計思路是什么了?需要關注的核心邏輯是什么?還是前面那句話: 每個插件的作用就是在請求的各個階段進行定制化的邏輯處理,那如果要實現(xiàn) retry 肯定你首要關注的是,什么時候才需要 retry?答案顯而易見,那就是請求失敗的時候,也就是需要在 onError 回調(diào)實現(xiàn) retry 的邏輯??紤]得周全一點,你還需要知道 retry 的次數(shù),因為第二次也可能失敗了。當然還有就是 retry 的時間間隔,失敗后多久 retry?這些是外部使用者關心的,所以應該將它們設計成配置項。

分析好了需求,我們看下 retry 插件的實現(xiàn):

const useRetryPlugin: Plugin<any, any[]> = (fetchInstance, { retryInterval, retryCount }) => {
  const timerRef = useRef<NodeJS.Timeout>();
  const countRef = useRef(0);
  const triggerByRetry = useRef(false);
  if (!retryCount) {
    return {};
  }
  return {
    onBefore: () => {
      if (!triggerByRetry.current) {
        countRef.current = 0;
      }
      triggerByRetry.current = false;
      if (timerRef.current) {
        clearTimeout(timerRef.current);
      }
    },
    onSuccess: () => {
      countRef.current = 0;
    },
    onError: () => {
      countRef.current += 1;
      if (retryCount === -1 || countRef.current <= retryCount) {
        // Exponential backoff 指數(shù)補償
        const timeout = retryInterval ?? Math.min(1000 * 2 ** countRef.current, 30000);
        timerRef.current = setTimeout(() => {
          triggerByRetry.current = true;
          fetchInstance.refresh();
        }, timeout);
      } else {
        countRef.current = 0;
      }
    },
    onCancel: () => {
      countRef.current = 0;
      if (timerRef.current) {
        clearTimeout(timerRef.current);
      }
    },
  };
};

第一個參數(shù)跟 usePollingPlugin 的插件一樣,都是接收 Fetch 實例,第二個參數(shù)是 options,支持 retryInterval、retryCount 等選型,從命名上看跟我們剛開始分析需求的時候想的差不多。

看代碼,核心的邏輯主要是在 onError 的回調(diào)中。首先前面定義了一個 countRef,記錄 retry 的次數(shù)。執(zhí)行了 onError 回調(diào),代表新的一次請求錯誤發(fā)生,然后判斷如果 retryCount 為 -1,或者當前 retry 的次數(shù)還小于用戶自定義的次數(shù),則通過一個定時器設置下次 retry 的時間,否則將 countRef 重置。

還需要注意的是其它的一些回調(diào)的處理,比如當請求成功或者被取消,需要重置 countRef,取消的時候還需要清理可能存在的下一次 retry 的定時器。

這里 onBefore 的邏輯處理怎么理解了?首先這里會有一個 triggerByRetry 的 flag,如果 flag 是 false。則會清空 countRef。然后會將 triggerByRetry 設置為 false,然后清理掉上一次可能存在的 retry 定時器。我個人的理解是這里設置一個 flag 是為了避免如果 useRequest 重新執(zhí)行,導致請求重新發(fā)起,那么在 onBefore 的時候需要做一些重置處理,以防和上一次的 retry 定時器撞車。

小結

其它插件的設計思路是類似的,關鍵是要分析出你需要實現(xiàn)的功能是作用在請求的哪個階段,那么就需要在這個鉤子里實現(xiàn)核心的邏輯處理。然后再考慮其它鉤子的一些重置處理,取消處理等,所以在優(yōu)秀合理的設計下實現(xiàn)某個功能它的成本是很低的,而且也不需要關心其它插件的邏輯,這樣每個插件也是可以獨立測試的。

useRequest

分析了核心的兩塊源碼,我們來看下,怎么組裝最后的 useRequest。首先在 useRequest 之前,還有一層抽象叫 useRequestImplement,看下是怎么實現(xiàn)的:

function useRequestImplement<TData, TParams extends any[]>(
  service: Service<TData, TParams>,
  options: Options<TData, TParams> = {},
  plugins: Plugin<TData, TParams>[] = [],
) {
  const { manual = false, ...rest } = options;
  const fetchOptions = {
    manual,
    ...rest,
  };
  const serviceRef = useLatest(service);
  const update = useUpdate();
  const fetchInstance = useCreation(() => {
    const initState = plugins.map((p) => p?.onInit?.(fetchOptions)).filter(Boolean);
    return new Fetch<TData, TParams>(
      serviceRef,
      fetchOptions,
      update,
      Object.assign({}, ...initState),
    );
  }, []);
  fetchInstance.options = fetchOptions;
  // run all plugins hooks
  // 這里為什么可以使用 map 循環(huán)去執(zhí)行每個插件 hooks
  fetchInstance.pluginImpls = plugins.map((p) => p(fetchInstance, fetchOptions));
  useMount(() => {
    if (!manual) {
      // useCachePlugin can set fetchInstance.state.params from cache when init
      const params = fetchInstance.state.params || options.defaultParams || [];
      // @ts-ignore
      fetchInstance.run(...params);
    }
  });
  useUnmount(() => {
    fetchInstance.cancel();
  });
  return {
    loading: fetchInstance.state.loading,
    data: fetchInstance.state.data,
    error: fetchInstance.state.error,
    params: fetchInstance.state.params || [],
    cancel: useMemoizedFn(fetchInstance.cancel.bind(fetchInstance)),
    refresh: useMemoizedFn(fetchInstance.refresh.bind(fetchInstance)),
    refreshAsync: useMemoizedFn(fetchInstance.refreshAsync.bind(fetchInstance)),
    run: useMemoizedFn(fetchInstance.run.bind(fetchInstance)),
    runAsync: useMemoizedFn(fetchInstance.runAsync.bind(fetchInstance)),
    mutate: useMemoizedFn(fetchInstance.mutate.bind(fetchInstance)),
  } as Result<TData, TParams>;
}

前面兩個參數(shù)如果使用過 useRequest 的都知道,就是我們通常傳給 useRequest 的參數(shù),一個是請求 api,一個就是 options。這里還多了個插件參數(shù),大概可以知道,內(nèi)置的一些插件應該會在更上層的地方傳進來,做一些參數(shù)初始化的邏輯。

然后通過 useLatest 構造一個 serviceRef,保證能拿到最新的 service。接下來,使用 useUpdate Hook 創(chuàng)建了update 方法,然后再創(chuàng)建 fetchInstance 的時候作為第三個參數(shù)傳遞給 Fetch,這里就是我們前面提到過的 subscribe。那我們要看下 useUpdate 做了什么:

const useUpdate = () =&gt; {
  const [, setState] = useState({});
  return useCallback(() =&gt; setState({}), []);
};

原來是個”黑科技“,類似 class 組件的 $forceUpdate API,就是通過 setState,讓組件強行渲染一次。

接著就是使用 useMount,如果發(fā)現(xiàn)用戶沒有設置 manual 或者將其設置為 false,立馬會執(zhí)行一次請求。當組件被銷毀的時候,在 useUnMount 中進行請求的取消。最后返回暴露給用戶的數(shù)據(jù)和 API。

最后看下 useRequest 的實現(xiàn):

function useRequest<TData, TParams extends any[]>(
  service: Service<TData, TParams>,
  options?: Options<TData, TParams>,
  plugins?: Plugin<TData, TParams>[],
) {
  return useRequestImplement<TData, TParams>(service, options, [
    ...(plugins || []),
    useDebouncePlugin,
    useLoadingDelayPlugin,
    usePollingPlugin,
    useRefreshOnWindowFocusPlugin,
    useThrottlePlugin,
    useRefreshDeps,
    useCachePlugin,
    useRetryPlugin,
    useReadyPlugin,
  ] as Plugin<TData, TParams>[]);
}

這里就會把內(nèi)置的插件傳入進去,當然還有用戶自定義的插件。實際上 useRequest 是支持用戶自定義插件的,這又突出了插件化設計的必要性。除了能降低本身自己的功能之間的復雜度,也能提供更多的靈活度給到用戶,如果你覺得功能不夠,實現(xiàn)自定義插件吧。

對自定義 hook 的思考

面向?qū)ο缶幊汤锩嬗幸粋€原則叫職責單一原則, 我個人理解它的含義是我們在設計一個類或者一個方法時,它的職責應該盡量單一。如果一個類的抽象不在一個層次,那么這個類注定會越來越膨脹,難以維護。一個方法職責越單一,它的復用性就可能越高,可測試性也越好。

其實我們在設計一個 hooks,也是需要參照這個原則的。Hooks API 出現(xiàn)的一個重大意義,就是解決我們在編寫組件時的邏輯復用問題。沒有 Hooks,之前是使用 HOC、Render props或者 Mixin 等解決邏輯復用的問題,然而每一種方式在大量實踐后都發(fā)現(xiàn)有明顯的缺點。所以,我們在自定義一個 Hook 時,總是應該朝著提高復用性的角度出發(fā)。

光說太抽象,舉個之前我在業(yè)務開發(fā)中遇到的一個例子。在一個項目中,我們封裝了一個計算預算的 Hook 叫 useBudgetValidate,不方便貼所有代碼,下面通過偽代碼列下這個 Hook 做的事:

export default function useBudgetValidate({ id, dailyBudgetType, mode }: Options) {
  const [dailyBudgetSetting, setDailyBudgetSetting] = useState<BudgetSetting | null>(null);
  // 從后端獲取某個數(shù)據(jù)
  const { data: adSetCountRes } = useRequest(
    (campaign: ReactText) => getSomeData({ params: { id } }));
  // 從后端獲取預算配置
  useRequest(
    () => {
      return getBudgetSetting();
    },
    {
      onSuccess: result => setDailyBudgetSetting(result),
    },
  );
  /**
   * 對于傳入的預算的類型, 返回的預算設置
   */
  const currentDailyBudgetSetting: DailyBudgetSetting | undefined = useMemo(() => {
    if (dailyBudgetType === BudgetTypeEnum.AdSet) {
      return dailyBudgetSetting?.adset;
    }
    if (dailyBudgetType === BudgetTypeEnum.Smart) {
      return dailyBudgetSetting?.smart;
    }
    const campaignBudget = dailyBudgetSetting?.campaign;
    // 這里有大量的計算邏輯,得到最后的 campaignBudget
    return campaignBudget;
  }, []);
  return {
    currentDailyBudgetSetting,
    dailyBudgetSetting,
  };
}

初一看,這個 Hook 沒有太大的問題,不就是從后端獲取數(shù)據(jù),然后根據(jù)不同的傳參進行預算計算,然后返回預算信息。但是現(xiàn)在有個問題,因為計算預算是項目通用的邏輯。在另外一個頁面也需要這段計算邏輯,但是那個頁面已經(jīng)從后端其它的接口獲取了預算信息,或者通過其它方式構造了計算預算需要的數(shù)據(jù)。所以這里的核心矛盾點在于很多頁面依賴這段計算邏輯,但是數(shù)據(jù)來源是不一致的。將獲取預算配置和其它信息的接口邏輯放在這個 Hook 里面就會導致它的職責不單一,所以沒法很容易在其它場景復用。

重構的思路很簡單,就是將數(shù)據(jù)請求的邏輯抽離,單獨封裝一個 Hook,或者把職責交給組件去做。這個 Hook 只做一件事,那就是接收配置和其它參數(shù),進行預算計算,將結果返回給外面。

但是對于 useRequest 這樣功能很復雜的 Hook 又怎么理解了?從功能上看,感覺它既做了一般請求數(shù)據(jù)的功能,又做了輪詢,做了緩存,做了重試,做了。。。反正很多很多的職責。

但是,如果你認真思考,發(fā)現(xiàn)這些功能又是依賴請求這個關鍵點,也就是說從這個角度來看,它們的抽象是在同一層次上。而且 useRquest 是一個更加通用的 Hook,它作為一個 package 給大量的用戶使用。如果你是一個使用者,你八成希望它是什么能力都有,你需要的它有,你暫時不需要的,它也幫你想好了。

Philosophy of Software Design 一書中提到一個概念叫:深模塊,它的意思是:深模塊是那些既提供了強大功能但又有著簡單接口的模塊。在設計一些模塊或者 API 的時候,比如像 useRequest 這種,那么就要符合這個原則,用戶只需要少量的配置,就能使用各插件帶來的豐富功能。

所以最后,總結下:如果我們在日常業(yè)務開發(fā)封裝一些 Hook,我們應該盡量保證職責單一,以提高其復用性。如果我們需要設計一個抽象程度很高,然后給多個項目使用的 Hook,那么在設計的時候,應該符合深模塊的特點,接口盡量簡單,又需要滿足各需求場景,將功能復雜度隱藏在 Hook 內(nèi)部。

總結

本文主要從 Fetch 類的實現(xiàn)和 plugins 的設計詳細解析了 useRequest 的源碼,看完源碼,我們知道了:

  • useRequest 核心源碼主要在 Fetch 類的實現(xiàn)中,通過巧妙的將請求劃分為各個階段的設計,然后把豐富的功能交給每個插件去實現(xiàn),解耦功能之間的關系,降低本身維護的復雜度,提高可測試性;
  • useRequest 雖然只是一個代碼千行左右的 Hook,但是通過插件化機制,使得各個功能之間完全解耦,提高了代碼的可維護性和可測試性,同時也提供了用戶自定義插件的能力;
  • 職責單一的原則在任何場景下引用都不會過時,我們在設計一些 Hook 的時候應該也要考慮單一原則。但是在設計一些跨多項目通用的 Hook,應該朝著深模塊的角度設計,提供簡單的接口,把復雜度隱藏在模塊內(nèi)部。

以上就是ahooks useRequest源碼精讀解析的詳細內(nèi)容,更多關于ahooks useRequest源碼的資料請關注腳本之家其它相關文章!

相關文章

  • React實現(xiàn)圖片懶加載的常見方式

    React實現(xiàn)圖片懶加載的常見方式

    圖片懶加載是一種優(yōu)化網(wǎng)頁性能的技術,它允許在用戶滾動到圖片位置之前延遲加載圖片,通過懶加載,可以在用戶需要查看圖片時才加載圖片,避免了不必要的圖片加載,本文給大家介紹了React實現(xiàn)圖片懶加載的常見方式,需要的朋友可以參考下
    2024-01-01
  • React Router中Link和NavLink的學習心得總結

    React Router中Link和NavLink的學習心得總結

    這篇文章主要介紹了React Router中Link和NavLink的學習心得總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 將React+Next.js的項目部署到服務器的方法

    將React+Next.js的項目部署到服務器的方法

    本文詳細介紹了將React+Next.js項目部署到服務器的步驟,包括服務器環(huán)境準備、項目配置與構建、啟動服務、配置Nginx反向代理、HTTPS配置、驗證與監(jiān)控以及高級優(yōu)化,感興趣的朋友一起看看吧
    2025-03-03
  • React項目中使用Redux的?react-redux

    React項目中使用Redux的?react-redux

    這篇文章主要介紹了React項目中使用Redux的?react-redux,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Modal.confirm是否違反了React模式分析

    Modal.confirm是否違反了React模式分析

    這篇文章主要為大家介紹了Modal.confirm是否違反了React模式分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • react項目從新建到部署的實現(xiàn)示例

    react項目從新建到部署的實現(xiàn)示例

    這篇文章主要介紹了react項目從新建到部署的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • React模擬實現(xiàn)Vue的keepAlive功能

    React模擬實現(xiàn)Vue的keepAlive功能

    Vue中,keep-alive組件可以緩存組件狀態(tài),在路由切換時重新掛載,實現(xiàn)這一功能在React中并不簡單,但我們可以借助一個第三方庫——react-activation 來模擬Vue的keep-alive功能,需要的朋友可以參考下
    2024-10-10
  • 教你react中如何理解usestate、useEffect副作用、useRef標識和useContext

    教你react中如何理解usestate、useEffect副作用、useRef標識和useContext

    這篇文章主要介紹了react中如何理解usestate、useEffect副作用、useRef標識和useContext,其實與vue中的ref和reactive一樣,通過useState獲取到的數(shù)據(jù)可以實現(xiàn)組件視圖實時交互,而普通定義的數(shù)據(jù)僅僅在業(yè)務中使用,需要的朋友可以參考下
    2022-11-11
  • React 遞歸手寫流程圖展示樹形數(shù)據(jù)的操作方法

    React 遞歸手寫流程圖展示樹形數(shù)據(jù)的操作方法

    這篇文章主要介紹了React 遞歸手寫流程圖展示樹形數(shù)據(jù)的操作方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 在react中使用 indexDb的方法

    在react中使用 indexDb的方法

    在React中使用IndexedDB進行前端離線存儲,可以存儲大量數(shù)據(jù),支持復雜的數(shù)據(jù)類型和高性能查詢,通過示例展示了如何創(chuàng)建數(shù)據(jù)庫、添加數(shù)據(jù)、查詢數(shù)據(jù)和構建一個簡單的待辦事項應用,感興趣的朋友跟隨小編一起看看吧
    2024-11-11

最新評論

青青青青草手机在线视频免费看 | 日本av熟女在线视频| 大鸡巴操b视频在线| 亚洲另类综合一区小说| 免费在线观看污污视频网站| 熟女在线视频一区二区三区| 国产视频网站国产视频| 人妻少妇av在线观看| 亚洲一级美女啪啪啪| 男人的天堂在线黄色| gay gay男男瑟瑟在线网站| 日韩a级精品一区二区| 综合一区二区三区蜜臀| 超碰中文字幕免费观看| 欧美麻豆av在线播放| 日本性感美女写真视频| 亚洲一区二区激情在线| 毛茸茸的大外阴中国视频| 蜜桃色婷婷久久久福利在线| 中国无遮挡白丝袜二区精品| 亚洲国产第一页在线观看| 18禁美女无遮挡免费| 18禁网站一区二区三区四区| 99精品一区二区三区的区| 一区二区三区的久久的蜜桃的视频 | 中出中文字幕在线观看| 人妻激情图片视频小说| 中文字幕无码日韩专区免费| 国产美女精品福利在线| 欧美日韩v中文在线| 美女张开腿让男生操在线看| 亚洲精品三级av在线免费观看| 亚洲福利天堂久久久久久| 欧美日韩亚洲国产无线码| 亚洲av黄色在线网站| 午夜极品美女福利视频| 久久久久久性虐视频| 一区二区视频在线观看免费观看| 青青青青青免费视频| 98精产国品一二三产区区别| 强行扒开双腿猛烈进入免费版| 亚洲精品久久综合久| 18禁美女黄网站色大片下载| 一区二区三区综合视频| 狠狠的往里顶撞h百合| 自拍偷拍 国产资源| 亚洲国产成人无码麻豆艾秋| 欧美成人黄片一区二区三区| 精品av国产一区二区三区四区| 最近中文2019年在线看| 欧美少妇性一区二区三区| 福利午夜视频在线观看| 手机看片福利盒子日韩在线播放 | 天天干狠狠干天天操| 偷拍美女一区二区三区| 91精品激情五月婷婷在线| 欧美另类z0z变态| 色狠狠av线不卡香蕉一区二区| 欧美偷拍自拍色图片| 亚洲一区二区久久久人妻| 国产97在线视频观看| 一区二区久久成人网| 中文字幕一区的人妻欧美日韩| 一区二区三区欧美日韩高清播放| 成人高清在线观看视频| 中国无遮挡白丝袜二区精品| 熟女国产一区亚洲中文字幕| 中文字幕高清免费在线人妻 | 亚洲一区二区三区精品视频在线| 日本精品一区二区三区在线视频。| 亚洲综合一区成人在线| 精品久久久久久高潮| 中文字幕无码日韩专区免费| 97资源人妻免费在线视频| 在线免费观看欧美小视频| 91精品国产高清自在线看香蕉网| 免费观看国产综合视频| 精品一区二区三区三区88| 黄色成人在线中文字幕| 欧美亚洲国产成人免费在线| 动色av一区二区三区| 亚洲国产40页第21页| 性欧美日本大妈母与子| 直接能看的国产av| 一区二区三区在线视频福利| 欧美80老妇人性视频| 中文字幕,亚洲人妻| 人妻凌辱欧美丰满熟妇| av在线shipin| 色天天天天射天天舔| 2022国产综合在线干| 高潮视频在线快速观看国家快速| 99国内小视频在现欢看| 天堂av在线播放免费| 天天摸天天干天天操科普| 99的爱精品免费视频| 欧美亚洲免费视频观看| 最新国产精品拍在线观看| 国产又大又黄免费观看| 国产白袜脚足J棉袜在线观看| 欧美专区日韩专区国产专区| 9l人妻人人爽人人爽| 狠狠躁夜夜躁人人爽天天久天啪| 91精品国产黑色丝袜| 最新中文字幕乱码在线| 91久久综合男人天堂| 免费看国产av网站| 狍和女人的王色毛片| 亚洲精品ww久久久久久| 国产女人被做到高潮免费视频| 啪啪啪啪啪啪啪啪啪啪黄色| 国产日韩精品一二三区久久久| aⅴ五十路av熟女中出| 亚洲高清视频在线不卡| 亚洲熟女女同志女同| 成人av天堂丝袜在线观看| 国产超码片内射在线| 老司机在线精品福利视频| av在线资源中文字幕| 一区二区三区视频,福利一区二区| 日韩av中文在线免费观看| 香蕉91一区二区三区| 九九热99视频在线观看97| 人妻少妇一区二区三区蜜桃| 日韩av有码一区二区三区4| 日韩精品电影亚洲一区| 天天日天天摸天天爱| 欧美日韩v中文在线| 91 亚洲视频在线观看| 免费观看理论片完整版| 亚洲最大黄了色网站| 爱有来生高清在线中文字幕| 热思思国产99re| 青青伊人一精品视频| 亚洲av无码成人精品区辽| 成年美女黄网站18禁久久| 天天日天天爽天天干| 亚洲人妻30pwc| 国产刺激激情美女网站| 女同互舔一区二区三区| 大鸡巴插入美女黑黑的阴毛| 2018在线福利视频| aiss午夜免费视频| 青青草精品在线视频观看| 精品av国产一区二区三区四区| 亚洲精品乱码久久久本| 又色又爽又黄的美女裸体| 和邻居少妇愉情中文字幕| av中文字幕网址在线| 久草极品美女视频在线观看| 老司机免费福利视频网| 夜色撩人久久7777| 人妻素人精油按摩中出| 亚洲男人的天堂a在线| 亚洲精品午夜久久久久| 自拍偷拍,中文字幕| 国产超码片内射在线| 亚洲特黄aaaa片| 欧美亚洲少妇福利视频| 欧美日韩精品永久免费网址| 国产黄色大片在线免费播放| 亚洲变态另类色图天堂网| 午夜91一区二区三区| 欧洲日韩亚洲一区二区三区| 2025年人妻中文字幕乱码在线| 日本www中文字幕| 青青草人人妻人人妻| 欧洲日韩亚洲一区二区三区| 亚洲av午夜免费观看| av乱码一区二区三区| 黑人巨大的吊bdsm| 日噜噜噜夜夜噜噜噜天天噜噜噜| 亚洲中文字幕乱码区| 99婷婷在线观看视频| 亚洲 欧美 自拍 偷拍 在线| 哥哥姐姐综合激情小说| 亚洲少妇人妻无码精品| 亚洲午夜高清在线观看| 精品久久久久久久久久久99| 福利一二三在线视频观看| 精品视频国产在线观看| 2021久久免费视频| 在线免费观看靠比视频的网站| 在线观看日韩激情视频| 亚洲乱码中文字幕在线| 色呦呦视频在线观看视频| 久久丁香花五月天色婷婷| 97人人模人人爽人人喊| 夜鲁夜鲁狠鲁天天在线| 亚洲天堂成人在线观看视频网站| 天堂av狠狠操蜜桃| 亚洲码av无色中文| 免费69视频在线看| 色综合久久久久久久久中文| 日本一道二三区视频久久| 乱亲女秽乱长久久久| 激情图片日韩欧美人妻| 全国亚洲男人的天堂| 不卡精品视频在线观看| 亚洲av天堂在线播放| 91she九色精品国产| 免费看美女脱光衣服的视频| 少妇高潮一区二区三区| 婷婷综合亚洲爱久久| 精品亚洲国产中文自在线| 五十路老熟女码av| 亚洲精品欧美日韩在线播放| 成年人黄色片免费网站| 国产精品久久久黄网站| 五十路在线观看完整版| 99久久超碰人妻国产| 黑人乱偷人妻中文字幕| 精品一区二区亚洲欧美| 久久免费看少妇高潮完整版| 深夜男人福利在线观看| 欧美一区二区中文字幕电影 | 熟女人妻在线观看视频| 老熟妇xxxhd老熟女| 97精品成人一区二区三区| 亚洲精品国产在线电影| 老熟妇xxxhd老熟女| 天码人妻一区二区三区在线看 | 午夜激情精品福利视频| 中文字幕综合一区二区| 欧美黄色录像免费看的| 又粗又长 明星操逼小视频| 欧美地区一二三专区| 欧美精品免费aaaaaa| 亚洲欧美成人综合视频| 视频一区二区在线免费播放| 日日爽天天干夜夜操| 天天日天天摸天天爱| 福利视频广场一区二区| 欧美日韩一级黄片免费观看| 大鸡吧插入女阴道黄色片| 天天色天天操天天舔| 日韩亚国产欧美三级涩爱| 最新91精品视频在线| 婷婷久久久综合中文字幕| 懂色av之国产精品| 东京干手机福利视频| 欧美亚洲偷拍自拍色图| 福利午夜视频在线合集| 狠狠鲁狠狠操天天晚上干干| 伊人成人综合开心网| 亚洲欧美另类自拍偷拍色图| 国产精品久久久久久久久福交| 欧美亚洲牲夜夜综合久久| 欧美va不卡视频在线观看| 青青青青青免费视频| 久久久久久久精品老熟妇| 中国黄片视频一区91| 人妻久久久精品69系列| 天天射,天天操,天天说| 精内国产乱码久久久久久| 天天摸天天日天天操| 91老师蜜桃臀大屁股| 国产普通话插插视频| 男大肉棒猛烈插女免费视频| 精品久久婷婷免费视频| 午夜精品亚洲精品五月色| 五月天中文字幕内射| 女生自摸在线观看一区二区三区| 边摸边做超爽毛片18禁色戒| 日本丰满熟妇大屁股久久| 99久久99一区二区三区| 自拍偷拍日韩欧美一区二区| 91精品高清一区二区三区| 午夜的视频在线观看| 端庄人妻堕落挣扎沉沦| 91人妻精品一区二区久久| 日本性感美女三级视频| 日本三极片中文字幕| 黄色中文字幕在线播放| 中文字幕一区二区自拍| 亚洲高清自偷揄拍自拍| 免费看国产又粗又猛又爽又黄视频| 福利国产视频在线观看| 最新日韩av传媒在线| 午夜成午夜成年片在线观看| 少妇深喉口爆吞精韩国| 亚洲在线免费h观看网站| 久久三久久三久久三久久| 91精品国产观看免费| 国产精品视频资源在线播放| 99国内小视频在现欢看| 97人妻色免费视频| 成人精品在线观看视频| 欧美日韩熟女一区二区三区| 国产91精品拍在线观看| 亚洲高清国产自产av| 亚洲国产中文字幕啊啊啊不行了 | 在线观看的黄色免费网站| 亚洲精品无码色午夜福利理论片| 亚洲av日韩av第一区二区三区| 骚货自慰被发现爆操| 亚洲国产精品免费在线观看| 成年美女黄网站18禁久久| 亚洲天堂有码中文字幕视频| 2020av天堂网在线观看| 中文字幕熟女人妻久久久| 日本韩国免费一区二区三区视频| 91大屁股国产一区二区| 日本后入视频在线观看| 久草视频 久草视频2| 国产又大又黄免费观看| 人人妻人人爽人人添夜| 888亚洲欧美国产va在线播放| 97超碰最新免费在线观看| 国产高潮无码喷水AV片在线观看| 欧美日韩亚洲国产无线码| 国产chinesehd精品麻豆| 国产va在线观看精品| 国产 在线 免费 精品| 成年午夜免费无码区| 激情内射在线免费观看| 亚洲va欧美va人人爽3p| 日本美女性生活一级片| 亚洲中文字幕国产日韩| 日韩精品啪啪视频一道免费| 淫秽激情视频免费观看| 天天摸天天干天天操科普| 日本xx片在线观看| 成人30分钟免费视频| 2022中文字幕在线| 国产精品久久久久久久女人18| 自拍偷拍亚洲欧美在线视频| 亚洲精品ww久久久久久| 中文字幕 码 在线视频| 欧美韩国日本国产亚洲| 中英文字幕av一区| 国产欧美精品一区二区高清 | 亚洲少妇人妻无码精品| 久久精品在线观看一区二区| 国产成人精品午夜福利训2021| 国产九色91在线视频| 97人妻人人澡爽人人精品| caoporm超碰国产| 成人蜜臀午夜久久一区| 91极品新人『兔兔』精品新作| 久久久久久久久久一区二区三区| 日本男女操逼视频免费看 | 2022天天干天天操| 男人插女人视频网站| av日韩在线观看大全| 中文字幕,亚洲人妻| 大香蕉大香蕉在线看| 中文字幕 亚洲av| 国产麻豆乱子伦午夜视频观看| 免费成人av中文字幕| 欧美精产国品一二三区| www,久久久,com| 综合激情网激情五月天| 亚洲 图片 欧美 图片| 天天日天天干天天要| 欧美男人大鸡吧插女人视频| 欧洲日韩亚洲一区二区三区| 国产夫妻视频在线观看免费| 欧美亚洲一二三区蜜臀| 亚洲精品乱码久久久久久密桃明| 国产成人精品一区在线观看| 人妻丝袜诱惑我操她视频| 绝顶痉挛大潮喷高潮无码| 人妻少妇一区二区三区蜜桃| 中文字幕无码日韩专区免费| 色综合色综合色综合色| 91精品国产麻豆国产| 99精品视频在线观看婷婷| av中文字幕电影在线看| 孕妇奶水仑乱A级毛片免费看| 亚洲卡1卡2卡三卡四老狼| 久久h视频在线观看| 丰满少妇人妻xxxxx| 亚洲天天干 夜夜操| 香港一级特黄大片在线播放| aaa久久久久久久久| 中文字幕日本人妻中出| 骚货自慰被发现爆操| 天天色天天爱天天爽| 日韩精品激情在线观看| 午夜影院在线观看视频羞羞羞| 青娱乐最新视频在线| 中字幕人妻熟女人妻a62v网| lutube在线成人免费看| 姐姐的朋友2在线观看中文字幕 | 天美传媒mv视频在线观看| 蜜桃视频入口久久久| 少妇露脸深喉口爆吞精| 日韩欧美在线观看不卡一区二区| 亚洲综合在线视频可播放| 欧美另类一区二区视频| 一级黄色片夫妻性生活| 一区二区三区四区中文| 东京热男人的av天堂| 超碰在线观看免费在线观看| 久久永久免费精品人妻专区| 老司机99精品视频在线观看| 中文字幕在线视频一区二区三区| 不卡日韩av在线观看| 日本性感美女视频网站| 美女张开两腿让男人桶av| 欧美一区二区中文字幕电影 | 婷婷五月亚洲综合在线| 亚洲av无女神免非久久| 国产午夜激情福利小视频在线| 91超碰青青中文字幕| 亚洲av男人的天堂你懂的| 午夜极品美女福利视频| 中文字幕在线一区精品| 91免费观看在线网站| 在线观看911精品国产| 老司机99精品视频在线观看| 欧美韩国日本国产亚洲| 国产三级影院在线观看| 5528327男人天堂| 日本xx片在线观看| 国产精品视频男人的天堂| 三级黄色亚洲成人av| 久草视频首页在线观看| 可以免费看的www视频你懂的| 欧美偷拍亚洲一区二区| 欧美天堂av无线av欧美| 日本乱人一区二区三区| 欧美80老妇人性视频| 精品视频一区二区三区四区五区| 精品欧美一区二区vr在线观看| 绝色少妇高潮3在线观看| 97a片免费在线观看| 好吊操视频这里只有精品| 伊人网中文字幕在线视频| 亚洲午夜伦理视频在线| 99热碰碰热精品a中文| 亚洲精品一区二区三区老狼| 精品少妇一二三视频在线| 成熟丰满熟妇高潮xx×xx| 狠狠躁夜夜躁人人爽天天天天97| 亚洲区欧美区另类最新章节| 搡老熟女一区二区在线观看| 天天操天天射天天操天天天| 男人的天堂一区二区在线观看| 亚洲免费国产在线日韩| 性欧美激情久久久久久久| 干逼又爽又黄又免费的视频| 国产精品视频资源在线播放| 性感美女福利视频网站| 动漫av网站18禁| 抽查舔水白紧大视频| 天天干天天操天天扣| 国产老熟女伦老熟妇ⅹ| 换爱交换乱高清大片| 中文字幕一区二区人妻电影冢本| 国产aⅴ一线在线观看| 四川乱子伦视频国产vip| 色呦呦视频在线观看视频| 福利国产视频在线观看| 五月精品丁香久久久久福利社 | 欧美怡红院视频在线观看| 夫妻在线观看视频91| 人妻在线精品录音叫床| 国产精品自拍在线视频| 国产男女视频在线播放| 97人人妻人人澡人人爽人人精品| 无码日韩人妻精品久久| 熟女人妻在线观看视频| 日本黄色特一级视频| 黄工厂精品视频在线观看| 5528327男人天堂| av乱码一区二区三区| 亚洲成人精品女人久久久| av高潮迭起在线观看| 99国产精品窥熟女精品| 久久精品亚洲成在人线a| 香蕉片在线观看av| 97超碰人人搞人人| 在线不卡成人黄色精品| 蜜桃专区一区二区在线观看| 亚洲一级美女啪啪啪| 一个人免费在线观看ww视频| 福利一二三在线视频观看 | 成人av久久精品一区二区| 少妇深喉口爆吞精韩国| 国产熟妇人妻ⅹxxxx麻豆| 香蕉av影视在线观看| 成人乱码一区二区三区av| 亚洲成人激情视频免费观看了| h国产小视频福利在线观看| 2022中文字幕在线| 国产视频网站一区二区三区| 国产精品黄片免费在线观看| 欧美一级色视频美日韩| 在线免费91激情四射| av在线资源中文字幕| 77久久久久国产精产品| 超pen在线观看视频公开97| 18禁美女黄网站色大片下载| 美味人妻2在线播放| 日本少妇人妻xxxxx18| 日本啪啪啪啪啪啪啪| 老鸭窝日韩精品视频观看| 久久机热/这里只有| 国产精品久久久久久久久福交 | 我想看操逼黄色大片| 人妻素人精油按摩中出| 中文字幕乱码av资源| 中国熟女@视频91| 黄页网视频在线免费观看| 青草久久视频在线观看| 精品一区二区三四区| av老司机亚洲一区二区| 亚洲 清纯 国产com| aaa久久久久久久久| 宅男噜噜噜666免费观看| 在线观看免费岛国av| 2021天天色天天干| 91精品国产黑色丝袜| 亚洲成人免费看电影| 国产精品欧美日韩区二区| 中文字幕无码一区二区免费| 欧美乱妇无乱码一区二区| 大胸性感美女羞爽操逼毛片| 亚洲欧美激情人妻偷拍| 一本一本久久a久久精品综合不卡| 2021久久免费视频| 亚洲国产欧美一区二区三区…| 成人免费毛片aaaa| 中文字幕免费在线免费| 激情小视频国产在线| 男人和女人激情视频| 午夜激情高清在线观看| 视频啪啪啪免费观看| 99av国产精品欲麻豆| 亚洲偷自拍高清视频| 99国产精品窥熟女精品| 在线视频自拍第三页| 激情国产小视频在线| 国产精品黄页网站视频| 亚洲伊人色一综合网| 亚洲美女美妇久久字幕组| 天天干天天操天天扣| 视频一区 二区 三区 综合| 天天干天天日天天干天天操| 激情伦理欧美日韩中文字幕| 社区自拍揄拍尻屁你懂的| 成人国产激情自拍三区| 这里有精品成人国产99| 中国把吊插入阴蒂的视频| 成人国产影院在线观看| 香蕉91一区二区三区| av久久精品北条麻妃av观看| 国产成人午夜精品福利| 国产成人小视频在线观看无遮挡 | 美女福利视频网址导航| 91九色porny国产在线| 日韩视频一区二区免费观看| 成人在线欧美日韩国产| 11久久久久久久久久久| 毛茸茸的大外阴中国视频| 18禁美女无遮挡免费| 2022精品久久久久久中文字幕| 国产普通话插插视频| 亚洲高清国产自产av| 国产精品国产三级国产午| 中国黄片视频一区91| 久久一区二区三区人妻欧美| 欧美美女人体视频一区| 亚洲中文字幕综合小综合| 鸡巴操逼一级黄色气| 亚洲一级 片内射视正片| 免费岛国喷水视频在线观看| 天天日天天摸天天爱| 深夜男人福利在线观看| 香蕉91一区二区三区| 香蕉av影视在线观看| 黄色大片男人操女人逼| 国产福利小视频二区| av无限看熟女人妻另类av| 亚洲区美熟妇久久久久| 男女第一次视频在线观看| 精品91自产拍在线观看一区| 在线免费91激情四射| 中文字幕日本人妻中出| 亚洲免费福利一区二区三区| 久久丁香婷婷六月天| 亚洲图库另类图片区| 国产精品成人xxxx| 偷拍自拍亚洲美腿丝袜| 国产精品sm调教视频| 91天堂精品一区二区| 午夜频道成人在线91| 少妇露脸深喉口爆吞精| 中文字幕av第1页中文字幕| 小穴多水久久精品免费看| 少妇深喉口爆吞精韩国| 人人爱人人妻人人澡39| 亚洲综合另类欧美久久| 久久精品亚洲成在人线a| 超碰在线中文字幕一区二区| 成人动漫大肉棒插进去视频| 亚洲变态另类色图天堂网| 日本午夜福利免费视频| 亚洲成人情色电影在线观看| 天干天天天色天天日天天射| 日本高清成人一区二区三区| 日本高清撒尿pissing| 亚洲1069综合男同| 自拍偷拍vs一区二区三区| 2018在线福利视频| 中国视频一区二区三区| 精品美女在线观看视频在线观看| 青草久久视频在线观看| 色吉吉影音天天干天天操 | 中文字幕AV在线免费看 | av手机在线观播放网站| 亚洲熟妇无码一区二区三区| 国产熟妇乱妇熟色T区| 少妇一区二区三区久久久| chinese国产盗摄一区二区 | 中国把吊插入阴蒂的视频| 久草极品美女视频在线观看| 57pao国产一区二区| 人妻少妇亚洲一区二区| 三级黄色亚洲成人av| 岛国黄色大片在线观看| 亚洲国产成人在线一区| 国产综合视频在线看片| 人妻丝袜av在线播放网址| 国产高清精品极品美女| 日本a级视频老女人| 青青青青操在线观看免费| 亚洲免费在线视频网站| 大胸性感美女羞爽操逼毛片| 色吉吉影音天天干天天操| 成人在线欧美日韩国产| 免费黄高清无码国产| 亚洲自拍偷拍精品网| 亚洲综合自拍视频一区| 亚洲一区二区三区偷拍女厕91| 男女之间激情网午夜在线| 人妻久久久精品69系列| 精品国产乱码一区二区三区乱| 亚洲va国产va欧美va在线| 亚洲少妇人妻无码精品| 久久久91蜜桃精品ad| 亚洲成a人片777777| 亚洲图片欧美校园春色| 红杏久久av人妻一区| 日本啪啪啪啪啪啪啪| 黄色录像鸡巴插进去| 国产无遮挡裸体免费直播视频| www骚国产精品视频| 99热99re在线播放| 久久久久只精品国产三级| 午夜精品久久久久麻豆影视| 无忧传媒在线观看视频| 久久久超爽一二三av| 好男人视频在线免费观看网站| 日本男女操逼视频免费看| 亚洲av日韩av第一区二区三区| 免费男阳茎伸入女阳道视频| 在线 中文字幕 一区| 精品亚洲国产中文自在线| 成人免费毛片aaaa| 自拍偷拍vs一区二区三区| 一级黄色av在线观看| 精品人妻每日一部精品| 视频 一区二区在线观看| 岛国免费大片在线观看| 国产欧美日韩在线观看不卡| 五十路熟女av天堂| 国产一区二区三免费视频| 婷婷综合亚洲爱久久| 亚洲国产欧美一区二区三区久久| 新婚人妻聚会被中出| 亚洲丝袜老师诱惑在线观看| 成人福利视频免费在线| 五月天久久激情视频| 福利一二三在线视频观看| 特大黑人巨大xxxx| 天天操天天干天天艹| 91‖亚洲‖国产熟女| 亚洲av色香蕉一区二区三区| 国产精品精品精品999| 国产白袜脚足J棉袜在线观看| 边摸边做超爽毛片18禁色戒| 中文字幕在线视频一区二区三区 | 成人福利视频免费在线| 国产黄色大片在线免费播放| 日本啪啪啪啪啪啪啪| 熟妇一区二区三区高清版| 国产品国产三级国产普通话三级| 99精品国自产在线人| 国产三级片久久久久久久| 国产精品自拍在线视频| 少妇被强干到高潮视频在线观看 | 青青青青青免费视频| 日本在线不卡免费视频| 亚洲国产精品久久久久久6| 区一区二区三国产中文字幕| 性感美女高潮视频久久久 | 国产aⅴ一线在线观看| 99精品亚洲av无码国产另类| 日本熟妇喷水xxx| 亚洲最大免费在线观看| 香蕉av影视在线观看| 欧美男同性恋69视频| 一区二区三区的久久的蜜桃的视频 | 风流唐伯虎电视剧在线观看| 91在线视频在线精品3| 四川五十路熟女av| 精品久久婷婷免费视频| 亚洲欧美一区二区三区电影| 国产成人精品一区在线观看 | 国产精品探花熟女在线观看| 天天日天天干天天干天天日| 日本韩国免费福利精品| 成人性爱在线看四区| 国产福利在线视频一区| 99国内小视频在现欢看| 天天日天天干天天舔天天射| 婷婷久久久久深爱网| 久草免费人妻视频在线| 少妇与子乱在线观看| 亚洲中文字幕乱码区| 日韩美女精品视频在线观看网站| 国产日韩一区二区在线看| 亚洲熟女综合色一区二区三区四区| 欧美乱妇无乱码一区二区| 日韩一个色综合导航| 国产精品国色综合久久| 3344免费偷拍视频| 懂色av之国产精品| 精品91自产拍在线观看一区| 夏目彩春在线中文字幕| 色天天天天射天天舔| 传媒在线播放国产精品一区 | 99精品国产免费久久| 国产亚洲国产av网站在线| av手机免费在线观看高潮| 精品国产午夜视频一区二区| 自拍偷拍亚洲精品第2页| 天天日天天干天天爱| 男女第一次视频在线观看| 欧美交性又色又爽又黄麻豆| 国产一区二区在线欧美| 午夜久久久久久久99| 婷婷综合蜜桃av在线| 天天日天天爽天天爽| 精品人妻一二三区久久| 国产女孩喷水在线观看| 亚洲一区二区三区精品视频在线| 中文字幕 人妻精品| 亚洲一区二区三区精品视频在线| av线天堂在线观看| 99久久中文字幕一本人| 成人在线欧美日韩国产| 亚洲人妻视频在线网| 国产乱弄免费视频观看| 亚洲一区二区激情在线| 人妻素人精油按摩中出| 99re久久这里都是精品视频| 91国内精品久久久久精品一| 搡老熟女一区二区在线观看| 韩国亚洲欧美超一级在线播放视频| 亚洲一区二区人妻av| 欧美美女人体视频一区| 小泽玛利亚视频在线观看| 自拍偷拍日韩欧美一区二区| 欧美地区一二三专区| 伊人日日日草夜夜草| 人妻自拍视频中国大陆| 九色精品视频在线播放| 超碰公开大香蕉97| 天天操天天爽天天干| 在线视频国产欧美日韩| 91国内视频在线观看| 成人综合亚洲欧美一区| 国产日本欧美亚洲精品视| 亚洲综合在线视频可播放| 国产a级毛久久久久精品| 国产麻豆精品人妻av| 91欧美在线免费观看| 中文字幕在线观看极品视频| 中文亚洲欧美日韩无线码| 一区二区免费高清黄色视频| 19一区二区三区在线播放| 97精品视频在线观看| 天天日天天透天天操| 久久这里只有精品热视频| 综合国产成人在线观看| 91精品国产91久久自产久强| 色花堂在线av中文字幕九九| 91精品国产麻豆国产| 久草电影免费在线观看| 888欧美视频在线| 亚洲专区激情在线观看视频| 93人妻人人揉人人澡人人| 婷婷六月天中文字幕| 天天干天天操天天插天天日| 国产精品久久久久久久精品视频| avjpm亚洲伊人久久| 视频久久久久久久人妻| 777奇米久久精品一区| av完全免费在线观看av| 性欧美激情久久久久久久 | 天天摸天天亲天天舔天天操天天爽| 另类av十亚洲av| 青青青青视频在线播放| 水蜜桃一区二区三区在线观看视频| 天天日天天添天天爽| 中文字幕乱码av资源| 激情五月婷婷综合色啪| 国产精品久久久久国产三级试频| 中文字幕人妻熟女在线电影| 边摸边做超爽毛片18禁色戒| 老鸭窝在线观看一区| 亚洲一区二区三区精品乱码| 中国熟女一区二区性xx| 99精品视频之69精品视频| 蜜桃视频17c在线一区二区| 91久久综合男人天堂| 一区二区三区日韩久久| 老司机福利精品免费视频一区二区| 亚洲视频在线观看高清| 欧美va亚洲va天堂va| 韩国男女黄色在线观看| 亚洲天堂av最新网址| 国产美女午夜福利久久| 免费福利av在线一区二区三区| av资源中文字幕在线观看| 少妇人妻久久久久视频黄片| 欧美精品伦理三区四区| 人人妻人人爽人人添夜| 一区二区三区四区中文| 清纯美女在线观看国产| 青青青爽视频在线播放| 风流唐伯虎电视剧在线观看 | 国产精彩对白一区二区三区| 国产精品自拍偷拍a| 日韩国产乱码中文字幕| 熟女人妻在线中出观看完整版| 日本少妇人妻xxxxx18| 国产一区成人在线观看视频| 欧美地区一二三专区| 一级A一级a爰片免费免会员| 亚洲精品成人网久久久久久小说| av手机免费在线观看高潮| 又色又爽又黄又刺激av网站| 国产精品入口麻豆啊啊啊| 中文字幕第1页av一天堂网| 亚洲国产在线精品国偷产拍| 国产麻豆剧果冻传媒app| 丰满的继坶3中文在线观看| 天天日天天敢天天干| 青青青青青青青青青国产精品视频| 五十路息与子猛烈交尾视频| 大鸡巴操娇小玲珑的女孩逼| 三级等保密码要求条款| 伊人成人在线综合网| 东京热男人的av天堂| 婷婷综合亚洲爱久久| 亚洲成人情色电影在线观看| 国产视频在线视频播放| 五月天中文字幕内射| 亚洲欧美清纯唯美另类| 日韩欧美中文国产在线| 91精品视频在线观看免费| 成人性爱在线看四区| 欧美中文字幕一区最新网址| 亚洲老熟妇日本老妇| ka0ri在线视频| 亚洲最大黄了色网站| 欧洲精品第一页欧洲精品亚洲| 91免费观看国产免费| 青青在线视频性感少妇和隔壁黑丝 | 亚洲国产成人在线一区| 亚洲一区二区三区久久午夜 | 97黄网站在线观看| 精品一区二区三区欧美| 国产真实灌醉下药美女av福利| 97超碰人人搞人人| 女同久久精品秋霞网| 老司机免费福利视频网| 521精品视频在线观看| 最新激情中文字幕视频| 精品av国产一区二区三区四区| 天堂av在线官网中文| 夜夜嗨av蜜臀av| 2020久久躁狠狠躁夜夜躁| 天天日天天添天天爽| 午夜频道成人在线91| 社区自拍揄拍尻屁你懂的 | 哥哥姐姐综合激情小说| 国产精品一二三不卡带免费视频 | 一区二区三区四区五区性感视频 | 激情国产小视频在线| 国内精品在线播放第一页| 日本一二三中文字幕| 在线成人日韩av电影| 少妇露脸深喉口爆吞精| 国产又粗又硬又大视频| 最后99天全集在线观看| 国产自拍在线观看成人| 成人国产激情自拍三区| 日韩少妇人妻精品无码专区| 欧美80老妇人性视频| 亚洲一区二区人妻av| 一本一本久久a久久精品综合不卡| 动漫av网站18禁| 精品老妇女久久9g国产| 天天草天天色天天干| 午夜精品一区二区三区4| 亚洲一区二区三区偷拍女厕91| 亚洲欧美成人综合视频| 久久这里只有精品热视频| 大香蕉大香蕉在线有码 av| 日本黄色三级高清视频| 欧洲黄页网免费观看| 91精品国产观看免费| 欧美黄片精彩在线免费观看| 制服丝袜在线人妻中文字幕| 国产性色生活片毛片春晓精品| asmr福利视频在线观看| 成人区人妻精品一区二视频| 国产九色91在线视频| av乱码一区二区三区| 亚洲国产精品美女在线观看 | 日韩一区二区电国产精品| 亚洲伊人av天堂有码在线| 大鸡吧插逼逼视频免费看 | 久久这里有免费精品| 伊人日日日草夜夜草| av大全在线播放免费| AV天堂一区二区免费试看| 宅男噜噜噜666免费观看| 欧美另类一区二区视频| 国产精品久久久久久久精品视频| 成年美女黄网站18禁久久| 欧洲国产成人精品91铁牛tv| 美女张开两腿让男人桶av| 亚洲伊人久久精品影院一美女洗澡 | 91老师蜜桃臀大屁股| 亚洲欧美一卡二卡三卡| 中文字幕日韩精品就在这里| 不卡日韩av在线观看| 老司机午夜精品视频资源| 老司机免费福利视频网| 青青青青青手机视频| 桃色视频在线观看一区二区| 中国视频一区二区三区| 国产精品久久久久网| 91社福利《在线观看| 在线成人日韩av电影| 99精品国产免费久久| 在线观看免费视频网| 国产成人午夜精品福利| 丰满的子国产在线观看| 在线观看视频一区麻豆| 岛国黄色大片在线观看| 91福利视频免费在线观看| 91欧美在线免费观看| 动色av一区二区三区| 成人国产影院在线观看| 91人妻精品一区二区在线看| 天天操天天射天天操天天天| 特大黑人巨大xxxx| 午夜的视频在线观看| 伊人情人综合成人久久网小说| 久久久精品精品视频视频| 人妻最新视频在线免费观看| 欧美乱妇无乱码一区二区| 日韩一区二区电国产精品| 手机看片福利盒子日韩在线播放 | 黄色大片男人操女人逼| 五十路熟女人妻一区二| 水蜜桃国产一区二区三区| 日韩美女福利视频网| 18禁美女无遮挡免费| 在线新三级黄伊人网| 女同互舔一区二区三区| 日本丰满熟妇大屁股久久| 亚洲一区久久免费视频| 偷拍自拍 中文字幕| 欧美精品资源在线观看| 久久精品久久精品亚洲人| 日韩无码国产精品强奸乱伦| 经典亚洲伊人第一页| 熟女91pooyn熟女| 操的小逼流水的文章| gogo国模私拍视频| 老熟妇凹凸淫老妇女av在线观看| 国产一区成人在线观看视频| 精内国产乱码久久久久久| 中文字幕在线第一页成人| 中字幕人妻熟女人妻a62v网| 精彩视频99免费在线| yy96视频在线观看| 男女之间激情网午夜在线| 亚洲国产精品中文字幕网站| yy96视频在线观看| 人妻少妇精品久久久久久| 国产性生活中老年人视频网站| 天天日天天干天天要| 国产日本欧美亚洲精品视| 日本www中文字幕| 国产三级片久久久久久久| 51国产偷自视频在线播放| 丰满的子国产在线观看| 亚洲欧美人精品高清| 99婷婷在线观看视频| 国产自拍黄片在线观看| 人妻少妇亚洲精品中文字幕| 99精品国产aⅴ在线观看| 唐人色亚洲av嫩草| 大鸡吧插逼逼视频免费看| 五十路av熟女松本翔子| 男人的天堂av日韩亚洲| 婷婷色国产黑丝少妇勾搭AV| 美女视频福利免费看| 特级无码毛片免费视频播放| 最新91精品视频在线| 亚洲激情偷拍一区二区| 黄色av网站免费在线| 日日夜夜大香蕉伊人| 亚洲国产40页第21页| 成年女人免费播放视频| 国产高清在线在线视频| 337p日本大胆欧美人| 亚洲av香蕉一区区二区三区犇| 在线免费视频 自拍| 天天干天天操天天插天天日| 日韩加勒比东京热二区| 一个人免费在线观看ww视频| 欧美在线精品一区二区三区视频 | 人妻丝袜榨强中文字幕| 很黄很污很色的午夜网站在线观看| 中文字幕无码一区二区免费| 日本美女性生活一级片| 亚洲人妻国产精品综合| 色婷婷精品大在线观看| 端庄人妻堕落挣扎沉沦| 国产又粗又硬又猛的毛片视频| 午夜在线一区二区免费| 任你操视频免费在线观看| 午夜精品九一唐人麻豆嫩草成人| 丝袜亚洲另类欧美变态| 沙月文乃人妻侵犯中文字幕在线| 男人靠女人的逼视频| 三级av中文字幕在线观看| 亚洲一区二区三区久久午夜| 清纯美女在线观看国产| 98视频精品在线观看| 天天躁日日躁狠狠躁躁欧美av| 五月天久久激情视频| av在线免费中文字幕| 精品美女福利在线观看| 亚洲粉嫩av一区二区三区| 初美沙希中文字幕在线| 免费大片在线观看视频网站| 午夜在线观看一区视频| 国产精品一二三不卡带免费视频| 2021国产一区二区| 国产成人精品久久二区91| 青青草精品在线视频观看| 操人妻嗷嗷叫视频一区二区| 日本在线不卡免费视频| 男人操女人的逼免费视频| 日韩美女精品视频在线观看网站| 偷拍自拍国产在线视频| 成人免费公开视频无毒| 亚洲一级 片内射视正片| 日本乱人一区二区三区| 成人av电影免费版| 男人的天堂av日韩亚洲| 亚洲综合在线观看免费| 韩国黄色一级二级三级| 欧美专区第八页一区在线播放| 日韩av有码中文字幕| 一二三区在线观看视频| 欧美一区二区三区激情啪啪啪| 国产丰满熟女成人视频| 国产精品黄片免费在线观看| 亚洲熟女久久久36d| 狠狠嗨日韩综合久久| 人妻激情图片视频小说| 天天躁日日躁狠狠躁av麻豆| 涩涩的视频在线观看视频| 黄色无码鸡吧操逼视频| av久久精品北条麻妃av观看| 久久精品亚洲成在人线a| 天天射夜夜操狠狠干| 丰满少妇人妻xxxxx| 亚洲国产40页第21页| 在线新三级黄伊人网| 51国产偷自视频在线播放| 色婷婷久久久久swag精品| 国产真实灌醉下药美女av福利| 亚洲欧美综合在线探花| 日韩精品中文字幕在线| 免费大片在线观看视频网站| 天天日天天干天天要| 成人国产激情自拍三区| av俺也去在线播放| 国产精品福利小视频a| 中文字幕一区二区亚洲一区| 精品久久久久久高潮| 欧美一区二区三区激情啪啪啪| 日视频免费在线观看| 亚国产成人精品久久久| 国产精品人妻66p| 91久久国产成人免费网站| 91啪国自产中文字幕在线| 亚洲精品高清自拍av| 98视频精品在线观看| 爱爱免费在线观看视频| 国产又粗又猛又爽又黄的视频美国| 欧美色呦呦最新网址| 一区二区三区另类在线| 亚洲精品福利网站图片| japanese五十路熟女熟妇| 超级碰碰在线视频免费观看| 亚洲av成人免费网站| 黄色男人的天堂视频| 亚洲精品乱码久久久本| 亚洲精品国品乱码久久久久| 国产精品国产精品一区二区| 成人网18免费视频版国产| 日比视频老公慢点好舒服啊| 欧美日韩亚洲国产无线码| 亚洲中文字幕乱码区| 97人妻夜夜爽二区欧美极品| 成人H精品动漫在线无码播放| 免费在线观看视频啪啪| av天堂中文字幕最新| 日本韩国免费福利精品| 影音先锋女人av噜噜色| 国产黄色a级三级三级三级| 熟女少妇激情五十路| 精品欧美一区二区vr在线观看| 日韩激情文学在线视频| 久久久极品久久蜜桃| 密臀av一区在线观看| 亚洲av男人天堂久久| 女同久久精品秋霞网| 亚洲自拍偷拍综合色| 91久久人澡人人添人人爽乱| 亚洲美女高潮喷浆视频| 久久久久久国产精品| 91色老99久久九九爱精品| 内射久久久久综合网| 青青草在观免费国产精品| 国产一区二区视频观看| 中文字日产幕乱六区蜜桃| 日韩人妻xxxxx| 黄色大片免费观看网站| 日本熟妇一区二区x x| 馒头大胆亚洲一区二区| 夏目彩春在线中文字幕| 阿v天堂2014 一区亚洲| 日本后入视频在线观看| 国产黄色a级三级三级三级| 99精品久久久久久久91蜜桃| 久草视频在线免播放| 黑人借宿ntr人妻的沦陷2| 国产日韩欧美美利坚蜜臀懂色| 中文字幕网站你懂的| 国产白袜脚足J棉袜在线观看| 国产精品久久久久久美女校花| 精品欧美一区二区vr在线观看 | 欧美 亚洲 另类综合| 日日日日日日日日夜夜夜夜夜夜| 婷婷综合蜜桃av在线| 国产熟妇一区二区三区av| 熟女人妻一区二区精品视频| av手机免费在线观看高潮| 岛国一区二区三区视频在线| 国产成人自拍视频播放| 大鸡巴插入美女黑黑的阴毛| 99精品免费久久久久久久久a| 亚洲精品ww久久久久久| 97超碰最新免费在线观看| 蜜桃久久久久久久人妻| 欧美aa一级一区三区四区| 18禁美女羞羞免费网站| 美女日逼视频免费观看| 在线观看一区二区三级| 91成人精品亚洲国产| 精品一区二区三区三区色爱| 午夜在线精品偷拍一区二| 青青青青在线视频免费观看| 北条麻妃高跟丝袜啪啪| av男人天堂狠狠干| 粉嫩小穴流水视频在线观看| 亚洲男人让女人爽的视频| 欧美精品伦理三区四区| 亚洲av色香蕉一区二区三区| 精品人妻一二三区久久| 中文字幕一区的人妻欧美日韩| 国产精品午夜国产小视频| 视频一区 视频二区 视频| 在线观看911精品国产| 欧美精产国品一二三产品价格| 国产成人精品午夜福利训2021| 亚洲成人av在线一区二区| 扒开腿挺进肉嫩小18禁视频| 99re国产在线精品| 国产精彩福利精品视频| 91大屁股国产一区二区| 亚洲 自拍 色综合图| 亚洲综合乱码一区二区| 亚洲伊人久久精品影院一美女洗澡 | 91精品免费久久久久久| 天天色天天爱天天爽| 88成人免费av网站| 日本a级视频老女人| 亚洲的电影一区二区三区 | 少妇人妻真实精品视频| 自拍偷拍亚洲欧美在线视频| 国产成人午夜精品福利| 亚洲男人在线天堂网| 日本一二三中文字幕| 亚洲第一伊人天堂网| 夜色撩人久久7777| 亚洲一区二区三区偷拍女厕91| av视屏免费在线播放| 自拍偷拍日韩欧美一区二区| 精品一区二区三区在线观看| 国产一线二线三线的区别在哪| 97年大学生大白天操逼| 99国产精品窥熟女精品| 婷婷六月天中文字幕| 国产高清女主播在线| 污污小视频91在线观看| 国产成人无码精品久久久电影| 91国内精品久久久久精品一| av老司机亚洲一区二区| jiujiure精品视频在线| 久久久精品999精品日本| 国产一区自拍黄视频免费观看| 国产密臀av一区二区三| 中国黄色av一级片| 色花堂在线av中文字幕九九| av一本二本在线观看| 精品一区二区三区在线观看| 久久精品久久精品亚洲人| 欧美少妇性一区二区三区| 狠狠躁狠狠爱网站视频 | 日本后入视频在线观看| 99亚洲美女一区二区三区| 亚洲伊人av天堂有码在线| 国产精品精品精品999| 欧洲国产成人精品91铁牛tv| 国产欧美日韩第三页| 中文字幕av男人天堂| gay gay男男瑟瑟在线网站| 日本少妇在线视频大香蕉在线观看| 999九九久久久精品| 91人妻精品一区二区久久| 亚洲午夜伦理视频在线| 人妻少妇中文有码精品| 国产中文精品在线观看| 精品国产成人亚洲午夜| 88成人免费av网站| 亚洲精品久久综合久| 老司机欧美视频在线看| 亚洲精品精品国产综合| okirakuhuhu在线观看| 91久久综合男人天堂| 真实国产乱子伦一区二区| 一级黄色片夫妻性生活| 国产三级片久久久久久久| 色秀欧美视频第一页| 中文字幕一区二 区二三区四区| 五月婷婷在线观看视频免费| 777奇米久久精品一区| 性感美女高潮视频久久久| 超碰97人人做人人爱| 日本少妇高清视频xxxxx| 日韩av中文在线免费观看| 色秀欧美视频第一页| 免费观看污视频网站| 国产在线91观看免费观看| 在线免费观看视频一二区| 国产V亚洲V天堂无码欠欠| 免费在线观看视频啪啪| 中国视频一区二区三区| 午夜美女少妇福利视频| 色偷偷伊人大杳蕉综合网| 激情五月婷婷综合色啪| 亚洲午夜福利中文乱码字幕| 色婷婷久久久久swag精品| 欧美精品黑人性xxxx| 日韩亚洲高清在线观看| 亚洲护士一区二区三区| 99re久久这里都是精品视频| 日韩av免费观看一区| 亚洲高清国产一区二区三区| 黄工厂精品视频在线观看| 精品suv一区二区69| 亚洲国产第一页在线观看| 中文字幕,亚洲人妻| 很黄很污很色的午夜网站在线观看 | 日本少妇在线视频大香蕉在线观看| AV天堂一区二区免费试看| 最近中文字幕国产在线| 激情五月婷婷综合色啪| 精品久久久久久久久久中文蒉| 日本午夜福利免费视频| 国产三级影院在线观看| 九九热99视频在线观看97| 视频 国产 精品 熟女 | 天天插天天色天天日| 天天操夜夜操天天操天天操 | 午夜青青草原网在线观看| 日韩精品中文字幕在线| 亚洲公开视频在线观看| 19一区二区三区在线播放| 日韩欧美国产一区ab| 成年美女黄网站18禁久久| 大香蕉玖玖一区2区| 在线观看视频网站麻豆| 天天日天天摸天天爱| 成熟丰满熟妇高潮xx×xx | 精品高潮呻吟久久av| 北条麻妃av在线免费观看| 91亚洲国产成人精品性色| 91人妻精品一区二区在线看| 婷婷午夜国产精品久久久| 午夜精品福利一区二区三区p| 不卡一区一区三区在线| 在线免费观看日本片| 五十路息与子猛烈交尾视频 | 自拍偷拍日韩欧美亚洲| 成年人的在线免费视频| 中文字幕高清资源站| 乱亲女秽乱长久久久| 亚洲第17页国产精品| 国产变态另类在线观看| 国产一级精品综合av| 黄色黄色黄片78在线| 免费岛国喷水视频在线观看 | 国产午夜无码福利在线看| 色吉吉影音天天干天天操| 免费费一级特黄真人片| 亚洲美女自偷自拍11页| 最新激情中文字幕视频| 亚洲精品乱码久久久久久密桃明 | 午夜精品一区二区三区城中村| 黄片三级三级三级在线观看| 不卡日韩av在线观看| 日韩在线视频观看有码在线| 蜜桃视频在线欧美一区| 欧洲精品第一页欧洲精品亚洲| 中文字幕在线观看极品视频| 女同久久精品秋霞网| 国产性生活中老年人视频网站| 福利在线视频网址导航| 免费成人va在线观看| 中文字幕在线永久免费播放| 日本熟女50视频免费| huangse网站在线观看| 亚洲 中文 自拍 另类 欧美| 日本韩国在线观看一区二区| 日韩a级精品一区二区| 在线观看视频 你懂的| 国产日韩一区二区在线看| 欧美亚洲国产成人免费在线| 久久一区二区三区人妻欧美 | 老司机福利精品免费视频一区二区| 操日韩美女视频在线免费看| 欧美视频中文一区二区三区| 自拍偷拍,中文字幕| 蜜桃视频在线欧美一区| 国产aⅴ一线在线观看| 一区二区在线视频中文字幕 | 日韩国产乱码中文字幕| 亚洲国产香蕉视频在线播放| 黄色片黄色片wyaa| 精品91高清在线观看| 日本阿v视频在线免费观看| 在线观看av观看av| 888欧美视频在线| 国产精品女邻居小骚货| 天天操天天操天天碰| 欧美男同性恋69视频| 国产精品久久久久网| 久久久久久9999久久久久| 在线观看免费视频色97| 中文字幕亚洲久久久| 国产白嫩美女一区二区| 同居了嫂子在线播高清中文| 成人网18免费视频版国产| yy96视频在线观看| 91久久人澡人人添人人爽乱| 亚洲欧美一卡二卡三卡| 五月天色婷婷在线观看视频免费| 一色桃子久久精品亚洲 | 大白屁股精品视频国产| 99久久久无码国产精品性出奶水| 2020中文字幕在线播放| 亚洲第一黄色在线观看| 色97视频在线播放| 91精品国产黑色丝袜| 人妻av无码专区久久绿巨人| 日本少妇人妻xxxxxhd| 午夜精品九一唐人麻豆嫩草成人| 馒头大胆亚洲一区二区| 欧美韩国日本国产亚洲| 特级欧美插插插插插bbbbb| 天天操天天干天天艹| 免费大片在线观看视频网站| 免费黄高清无码国产| 亚洲国产40页第21页| 午夜免费观看精品视频| 国产精品黄页网站视频| 中文字幕一区二区三区蜜月| 97成人免费在线观看网站| 欧美精产国品一二三区| 日韩欧美国产一区不卡| 75国产综合在线视频| 熟女人妻在线中出观看完整版| 成人激情文学网人妻| 日韩精品啪啪视频一道免费| okirakuhuhu在线观看| 成人网18免费视频版国产| 极品丝袜一区二区三区| 中文字幕高清免费在线人妻| 国产av福利网址大全| 黄色无码鸡吧操逼视频| 最新国产精品网址在线观看| 青青青青青操视频在线观看| 亚洲精品三级av在线免费观看| 午夜婷婷在线观看视频| 成人伊人精品色xxxx视频| 大香蕉福利在线观看| 中文字幕日本人妻中出| 国产黄色大片在线免费播放| 蜜臀成人av在线播放| 午夜精品福利一区二区三区p| 青青青爽视频在线播放| 人妻最新视频在线免费观看| 97超碰国语国产97超碰| 欧美 亚洲 另类综合| 中文字幕av一区在线观看| 国产av欧美精品高潮网站| 粉嫩av蜜乳av蜜臀 | 亚洲一区二区三区uij| 欧美老妇精品另类不卡片| 非洲黑人一级特黄片| 日本三极片中文字幕| 在线不卡成人黄色精品| 天天干天天操天天扣| 国产精品国产三级国产精东| 视频 国产 精品 熟女 | 日韩精品电影亚洲一区| 99热这里只有国产精品6| 99热久久这里只有精品8| 国内自拍第一页在线观看| sspd152中文字幕在线| 中文字幕一区二 区二三区四区 | 青草久久视频在线观看| 噜噜色噜噜噜久色超碰| 国际av大片在线免费观看| 国产高清在线在线视频| 91综合久久亚洲综合| 888欧美视频在线| 少妇一区二区三区久久久| 经典av尤物一区二区| 中文字幕高清免费在线人妻| 久久香蕉国产免费天天| 国产精品视频资源在线播放| 97国产精品97久久| 免费人成黄页网站在线观看国产| 亚洲综合一区成人在线| 在线国产日韩欧美视频| 又黄又刺激的午夜小视频| 欧美xxx成人在线| 五十路丰满人妻熟妇| 在线观看av亚洲情色| 中文字幕第一页国产在线| 日韩成人免费电影二区| 大鸡巴插入美女黑黑的阴毛| 久碰精品少妇中文字幕av| 国产精品久久9999| 激情人妻校园春色亚洲欧美| 无忧传媒在线观看视频| 色吉吉影音天天干天天操| 美女福利视频导航网站| 精品视频国产在线观看| 亚洲av日韩高清hd| 韩国三级aaaaa高清视频| 亚洲一级av大片免费观看| 精品国产污污免费网站入口自 | 91福利在线视频免费观看| 天天干天天搞天天摸| 清纯美女在线观看国产| 毛片一级完整版免费| 亚洲va国产va欧美va在线| weyvv5国产成人精品的视频| 日曰摸日日碰夜夜爽歪歪| 国产精品久久9999| 天天干天天操天天爽天天摸 | 9色在线视频免费观看| 色婷婷综合激情五月免费观看| 蝴蝶伊人久久中文娱乐网| 天堂av中文在线最新版| 大鸡巴操娇小玲珑的女孩逼| 亚洲福利午夜久久久精品电影网| 在线观看国产免费麻豆| 97瑟瑟超碰在线香蕉| 男女啪啪视频免费在线观看| 99热国产精品666| 人妻无码色噜噜狠狠狠狠色| 午夜成午夜成年片在线观看| 一本一本久久a久久精品综合不卡| 动漫美女的小穴视频| 欧美xxx成人在线| 美女福利视频网址导航| 天天想要天天操天天干| 黄色中文字幕在线播放| 91综合久久亚洲综合| 午夜久久久久久久99| 欧美在线精品一区二区三区视频| 日韩欧美一级黄片亚洲| 人人妻人人澡人人爽人人dvl| 亚洲男人让女人爽的视频| 欧美日韩v中文在线| 亚洲美女自偷自拍11页| 欧美成人综合色在线噜噜| 天天操,天天干,天天射| 老司机你懂得福利视频| 青春草视频在线免费播放| 欧美偷拍自拍色图片| 一区二区三区四区视频在线播放| 亚洲av色香蕉一区二区三区| 亚洲精品久久视频婷婷| 激情五月婷婷综合色啪| 国产精品亚洲а∨天堂免| 在线国产日韩欧美视频| 成人24小时免费视频| 欧美一区二区三区四区性视频| av中文字幕在线观看第三页| 精品suv一区二区69| www久久久久久久久久久| 亚洲人妻视频在线网| 精品国产高潮中文字幕| 黄色三级网站免费下载| 水蜜桃一区二区三区在线观看视频| 91麻豆精品传媒国产黄色片| 日本少妇在线视频大香蕉在线观看| 99热这里只有精品中文| 亚洲va国产va欧美精品88| 黑人变态深video特大巨大| 天天干夜夜操天天舔| 在线国产日韩欧美视频| 大香蕉大香蕉大香蕉大香蕉大香蕉| 日本美女性生活一级片| 亚洲成高清a人片在线观看| 婷婷色国产黑丝少妇勾搭AV| 日韩av有码中文字幕| 日韩精品电影亚洲一区| 欧美日本aⅴ免费视频| 国产精品大陆在线2019不卡| 亚洲成人av一区在线| 国产va精品免费观看| nagger可以指黑人吗| 精品人妻一二三区久久| 80电影天堂网官网| 馒头大胆亚洲一区二区| 蜜臀av久久久久蜜臀av麻豆| 在线免费观看靠比视频的网站| 熟女人妻三十路四十路人妻斩| 在线免费观看日本片| 免费在线看的黄片视频| 青草亚洲视频在线观看| 久久久麻豆精亚洲av麻花| 2021最新热播中文字幕| 99精品视频在线观看婷婷| 国产污污污污网站在线| 国产高清精品极品美女| 69精品视频一区二区在线观看| 人妻熟女中文字幕aⅴ在线| 国产精品一区二区三区蜜臀av | 欧美另类重口味极品在线观看| 日本www中文字幕| 精品一区二区三区三区色爱| 国产精品成人xxxx| 欧美日韩不卡一区不区二区| 欧美亚洲免费视频观看| 亚洲中文字幕校园春色| 国产av自拍偷拍盛宴| 亚洲乱码中文字幕在线| 超碰97免费人妻麻豆| 日本欧美视频在线观看三区| 91精品国产91青青碰| 2012中文字幕在线高清| 老司机免费视频网站在线看| 国产老熟女伦老熟妇ⅹ| 女警官打开双腿沦为性奴| aⅴ五十路av熟女中出| 国产精品视频一区在线播放| 国产伦精品一区二区三区竹菊| 亚洲va天堂va国产va久| 97精品综合久久在线| 国产麻豆剧传媒精品国产av蜜桃| 欧美日韩情色在线观看| 欧美偷拍亚洲一区二区| 青青草亚洲国产精品视频| 综合页自拍视频在线播放| 欧美一区二区中文字幕电影| 护士小嫩嫩又紧又爽20p| 五十路丰满人妻熟妇| 亚洲成高清a人片在线观看| 岛国青草视频在线观看| 五十路人妻熟女av一区二区| 亚洲欧美日韩视频免费观看| 国产片免费观看在线观看| av老司机精品在线观看| 伊人综合免费在线视频| 亚洲av日韩av第一区二区三区| 天天日天天敢天天干| 亚洲欧美激情人妻偷拍| 91免费观看国产免费| 免费一级黄色av网站| 88成人免费av网站| 欧美久久一区二区伊人| 大香蕉大香蕉大香蕉大香蕉大香蕉 | 97小视频人妻一区二区| 又粗又长 明星操逼小视频 | 91精品国产麻豆国产| 亚洲另类伦春色综合小| 天天日天天玩天天摸| 岛国av高清在线成人在线| 在线观看视频一区麻豆| 91 亚洲视频在线观看| 五十路av熟女松本翔子| 亚洲精品久久视频婷婷| 日本午夜福利免费视频| 精品一区二区三区在线观看| 中文字幕在线观看极品视频| 天天操天天操天天碰| 色综合天天综合网国产成人| 色秀欧美视频第一页| 免费av岛国天堂网站| 国产黑丝高跟鞋视频在线播放| 91免费黄片可看视频| 欧美成人黄片一区二区三区| 偷拍自拍亚洲美腿丝袜| 日韩一区二区电国产精品| 99久久99久国产黄毛片| 蜜臀av久久久久久久| 免费黄高清无码国产| 久久人人做人人妻人人玩精品vr| 一区二区三区久久中文字幕| 狠狠躁夜夜躁人人爽天天久天啪| 国产一区二区视频观看| av乱码一区二区三区| 九九视频在线精品播放| 日本熟妇一区二区x x| 午夜场射精嗯嗯啊啊视频| 日韩人妻xxxxx| 97香蕉碰碰人妻国产樱花| 熟女少妇激情五十路| 91中文字幕最新合集| 大鸡吧插入女阴道黄色片| 人妻3p真实偷拍一二区| 亚洲女人的天堂av| 大鸡吧插逼逼视频免费看| www日韩毛片av| 日韩美av高清在线| 2022国产精品视频| 天天干天天操天天扣| 免费看国产av网站| 黄色男人的天堂视频| 国产成人精品亚洲男人的天堂| 亚洲最大免费在线观看| 国产揄拍高清国内精品对白 | 少妇露脸深喉口爆吞精| lutube在线成人免费看| 初美沙希中文字幕在线| 97a片免费在线观看| 欧美特色aaa大片| 国产精品自拍视频大全| 天天日天天添天天爽| 午夜大尺度无码福利视频| 9久在线视频只有精品| 日本午夜爽爽爽爽爽视频在线观看| 早川濑里奈av黑人番号| 中文字幕在线第一页成人| 91试看福利一分钟| 欧美成人综合色在线噜噜| 亚洲少妇高潮免费观看| 早川濑里奈av黑人番号| 亚洲特黄aaaa片| 欧美成人黄片一区二区三区 | 男人操女人的逼免费视频| 日本性感美女写真视频| 日本欧美视频在线观看三区| 女生被男生插的视频网站| 国产一级麻豆精品免费| 中文字幕最新久久久| 欧美另类重口味极品在线观看| 日本熟女精品一区二区三区| 欧美成人精品欧美一级黄色| 免费大片在线观看视频网站| 极品粉嫩小泬白浆20p主播| 超级av免费观看一区二区三区| 午夜国产免费福利av| 中文字幕一区二 区二三区四区| 中文字幕人妻被公上司喝醉在线| 熟女少妇激情五十路| 国产日本精品久久久久久久| 人妻凌辱欧美丰满熟妇| 亚洲欧美清纯唯美另类| 亚洲成人av一区在线| 亚洲1069综合男同| 日本www中文字幕| 亚洲欧美一区二区三区电影| 国产第一美女一区二区三区四区| 国产精品黄页网站视频| 57pao国产一区二区| 性感美女高潮视频久久久| 家庭女教师中文字幕在线播放| 在线观看国产免费麻豆| 91免费观看国产免费| 少妇被强干到高潮视频在线观看| 国产成人精品av网站| 五十路人妻熟女av一区二区| 91啪国自产中文字幕在线| 欧美在线精品一区二区三区视频| 一区二区三区久久中文字幕| 天天干天天操天天扣| 国产视频在线视频播放| 91国内精品自线在拍白富美| 欧美成人综合色在线噜噜| 精品一区二区三区三区色爱| 日韩av有码一区二区三区4 | 蜜臀成人av在线播放| 亚洲熟女女同志女同| 久久精品美女免费视频| 国产福利小视频免费观看| 91超碰青青中文字幕| 3344免费偷拍视频| 欧洲欧美日韩国产在线| 抽查舔水白紧大视频| 亚洲一区二区三区精品视频在线| 天天干狠狠干天天操| 国产欧美日韩第三页| 婷婷色国产黑丝少妇勾搭AV | 国产精品免费不卡av| 玖玖一区二区在线观看| 亚洲午夜电影在线观看| 初美沙希中文字幕在线| 午夜91一区二区三区| 亚洲 色图 偷拍 欧美| yellow在线播放av啊啊啊| 国产露脸对白在线观看| 亚洲推理片免费看网站| 人妻素人精油按摩中出| 少妇高潮一区二区三区| 国产一区二区欧美三区| 欧美精产国品一二三产品区别大吗| 19一区二区三区在线播放| 99久久激情婷婷综合五月天| 啪啪啪啪啪啪啪免费视频| 成人18禁网站在线播放| 日韩美女福利视频网| 超碰97免费人妻麻豆| 91av精品视频在线| 男人天堂最新地址av| aiss午夜免费视频| 精品亚洲在线免费观看| 国产janese在线播放| 欧美色呦呦最新网址| 边摸边做超爽毛片18禁色戒| 91九色国产熟女一区二区| 一级黄片久久久久久久久| 国产女人露脸高潮对白视频| 93视频一区二区三区| 38av一区二区三区| 一区二区三区四区五区性感视频| 成人蜜臀午夜久久一区| 国产a级毛久久久久精品| 免费成人va在线观看| 丝袜美腿欧美另类 中文字幕| 亚洲午夜电影在线观看| 精彩视频99免费在线| 欧美熟妇一区二区三区仙踪林| 中文字幕一区二区三区人妻大片| 成人高清在线观看视频| 亚洲成人av一区久久| 精品suv一区二区69| 国产精品熟女久久久久浪潮| 秋霞午夜av福利经典影视| 亚洲青青操骚货在线视频| 欧美成人小视频在线免费看 | 国产成人精品福利短视频| 国产伊人免费在线播放| 丝袜美腿欧美另类 中文字幕| 天天摸天天干天天操科普| 亚洲人妻30pwc| 成人sm视频在线观看| 亚洲另类综合一区小说| 91国产在线视频免费观看| 久草福利电影在线观看| 日韩视频一区二区免费观看| 福利一二三在线视频观看| 日韩成人性色生活片| 亚洲av自拍天堂网| 亚洲熟女女同志女同| 亚洲av无码成人精品区辽| 黄色在线观看免费观看在线 | 日韩人妻丝袜中文字幕| 久久精品36亚洲精品束缚| 欧美日韩激情啪啪啪| 成人色综合中文字幕| 欧美一区二区三区高清不卡tv | 黄色视频在线观看高清无码| 久久久久只精品国产三级| 大屁股熟女一区二区三区| 天天夜天天日天天日| 欧美成一区二区三区四区| 91免费黄片可看视频| 搡老熟女一区二区在线观看| 青青青激情在线观看视频| 美女少妇亚洲精选av| 亚洲福利精品视频在线免费观看| 亚洲色偷偷综合亚洲AV伊人| 亚洲欧美一区二区三区爱爱动图| 色97视频在线播放| 免费看国产av网站| 老司机深夜免费福利视频在线观看| 国产一区二区神马久久| 老鸭窝日韩精品视频观看| 国产午夜福利av导航| 日韩欧美一级黄片亚洲| 国产精品探花熟女在线观看| 日本韩国亚洲综合日韩欧美国产 | 国产又大又黄免费观看| 中文字幕—97超碰网| 年轻的人妻被夫上司侵犯| 国产亚洲欧美另类在线观看| 美女被肏内射视频网站| 久久久久久久99精品| 黄片大全在线观看观看| 激情小视频国产在线| 国产麻豆乱子伦午夜视频观看| 亚洲成人线上免费视频观看| 少妇深喉口爆吞精韩国| 五月精品丁香久久久久福利社| 红桃av成人在线观看| 亚洲av成人网在线观看| 福利一二三在线视频观看| 在线免费观看亚洲精品电影| 91综合久久亚洲综合| 一区二区视频在线观看视频在线| 久久久久五月天丁香社区| 99视频精品全部15| 国产成人精品av网站| 丝袜肉丝一区二区三区四区在线| 亚洲成人三级在线播放| 黑人巨大的吊bdsm| 在线免费观看av日韩| 班长撕开乳罩揉我胸好爽| 亚洲激情唯美亚洲激情图片| 大陆精品一区二区三区久久| 在线播放 日韩 av| 色噜噜噜噜18禁止观看| 国产午夜福利av导航| 88成人免费av网站| 四川乱子伦视频国产vip| 天天日天天干天天爱| 自拍偷拍亚洲另类色图| 亚洲综合另类精品小说| 亚洲熟妇x久久av久久| 日本av在线一区二区三区| 亚洲国产精品中文字幕网站| okirakuhuhu在线观看| 亚洲av自拍偷拍综合| 人妻丰满熟妇综合网| 清纯美女在线观看国产| 最新97国产在线视频| 黄色男人的天堂视频| 亚洲国产第一页在线观看| 99精品免费久久久久久久久a| 老司机深夜免费福利视频在线观看| 国产精品成人xxxx| 热久久只有这里有精品| 人妻激情图片视频小说| 操日韩美女视频在线免费看 | 人妻少妇精品久久久久久| 久久免费看少妇高潮完整版| 日韩美女综合中文字幕pp| 91久久综合男人天堂| 沈阳熟妇28厘米大战黑人| 一区二区视频在线观看视频在线| 白嫩白嫩美女极品国产在线观看| 91 亚洲视频在线观看| 91人妻精品久久久久久久网站| 午夜精品一区二区三区城中村| 亚洲国产40页第21页| 337p日本大胆欧美人| 99人妻视频免费在线| 欧美日韩在线精品一区二区三| 伊人情人综合成人久久网小说| 亚洲午夜福利中文乱码字幕| 亚洲av极品精品在线观看| 天天操天天干天天日狠狠插| 少妇一区二区三区久久久| 真实国模和老外性视频| 亚洲精品午夜aaa久久| av在线免费资源站| 青青青青青青草国产| av在线免费观看亚洲天堂| 中英文字幕av一区| 自拍偷拍日韩欧美亚洲| 亚洲欧美日韩视频免费观看| 三上悠亚和黑人665番号| h国产小视频福利在线观看| 99久久成人日韩欧美精品| 久久精品亚洲国产av香蕉| 久久农村老妇乱69系列| 中文字幕av第1页中文字幕| 91在线视频在线精品3| 日日夜夜精品一二三| 2022国产精品视频| 青青社区2国产视频| 在线视频免费观看网| 午夜精品久久久久久99热| 日本黄色特一级视频| 特黄老太婆aa毛毛片| 美洲精品一二三产区区别| 边摸边做超爽毛片18禁色戒| 馒头大胆亚洲一区二区| 小泽玛利亚视频在线观看| 超pen在线观看视频公开97| 人人妻人人爱人人草| 一区二区三区四区中文| 亚洲高清国产自产av| 中文字幕av熟女人妻| 久久精品美女免费视频| 巨乳人妻日下部加奈被邻居中出| 蝴蝶伊人久久中文娱乐网| 国产第一美女一区二区三区四区 | 激情国产小视频在线| 日韩美女精品视频在线观看网站| 在线观看的黄色免费网站| 100%美女蜜桃视频| 鸡巴操逼一级黄色气| 国产视频网站国产视频| 75国产综合在线视频| 免费在线看的黄片视频| 在线国产精品一区二区三区| 天天干天天操天天爽天天摸| 黄色视频在线观看高清无码| 高潮视频在线快速观看国家快速| 欧美成人综合色在线噜噜| 婷婷久久一区二区字幕网址你懂得| 一本一本久久a久久精品综合不卡| 国产在线一区二区三区麻酥酥| 欧美激情电影免费在线| 91老师蜜桃臀大屁股| 青青青青青青青青青青草青青| 任你操视频免费在线观看| 91精品国产91久久自产久强| 中文字幕在线乱码一区二区| 99精品免费久久久久久久久a| rct470中文字幕在线| av在线免费资源站| 在线不卡成人黄色精品| 亚洲激情偷拍一区二区| 999热精品视频在线| 精品一区二区三区在线观看| 日本真人性生活视频免费看| 日日爽天天干夜夜操| 成人资源在线观看免费官网| 巨乳人妻日下部加奈被邻居中出| 天天躁日日躁狠狠躁躁欧美av| 色综合久久无码中文字幕波多| 亚洲一区二区三区久久受 | 国语对白xxxx乱大交| 欧美一区二区三区高清不卡tv| 好男人视频在线免费观看网站| 99久久久无码国产精品性出奶水| 欧美伊人久久大香线蕉综合| 亚洲av日韩av第一区二区三区| 日本午夜福利免费视频| 色吉吉影音天天干天天操 | 国产夫妻视频在线观看免费 | 中国产一级黄片免费视频播放| 久精品人妻一区二区三区| 亚洲嫩模一区二区三区| 亚洲男人的天堂a在线| 夜夜骑夜夜操夜夜奸| 欧洲国产成人精品91铁牛tv | 日本av高清免费网站| 蜜桃视频17c在线一区二区| av手机在线观播放网站| 中文字幕中文字幕人妻| av日韩在线观看大全| 国产卡一卡二卡三乱码手机| 亚洲一区二区三区久久受| 国产又色又刺激在线视频| 欧美日韩国产一区二区三区三州| 天天做天天爽夜夜做少妇| 天天色天天操天天透| 和邻居少妇愉情中文字幕| 精品高潮呻吟久久av| 国产V亚洲V天堂无码欠欠| 亚洲av男人的天堂你懂的| 成人30分钟免费视频| 北条麻妃高跟丝袜啪啪| 欧美精品中文字幕久久二区| 91亚洲手机在线视频播放| 99婷婷在线观看视频| 乱亲女秽乱长久久久| 日韩成人性色生活片| 香蕉av影视在线观看| 亚洲欧美日韩视频免费观看| 毛片一级完整版免费| 二区中出在线观看老师| 午夜福利人人妻人人澡人人爽 | 丝袜亚洲另类欧美变态| 特级欧美插插插插插bbbbb| 亚洲变态另类色图天堂网| 唐人色亚洲av嫩草| 91色老99久久九九爱精品| 亚洲高清视频在线不卡| 91精品视频在线观看免费| 欧美成人一二三在线网| 精品久久久久久久久久久久人妻| 国产又粗又黄又硬又爽| 韩国三级aaaaa高清视频| 11久久久久久久久久久| 99热99re在线播放| 亚洲伊人久久精品影院一美女洗澡 | 久久久久久国产精品| 亚洲偷自拍高清视频| 不卡一区一区三区在线| 亚洲女人的天堂av| 99久久久无码国产精品性出奶水| 边摸边做超爽毛片18禁色戒| 亚洲va国产va欧美精品88| 性欧美日本大妈母与子| 色综合久久久久久久久中文| 国产精品久久久久久久久福交| 欧美偷拍自拍色图片| AV无码一区二区三区不卡| 大香蕉大香蕉在线看| 欲乱人妻少妇在线视频裸| 亚洲天堂有码中文字幕视频| 1区2区3区4区视频在线观看| 国产自拍黄片在线观看| 日韩熟女av天堂系列| 三级等保密码要求条款| 青娱乐极品视频青青草| 黄片三级三级三级在线观看| 亚洲公开视频在线观看| 中文字幕亚洲中文字幕| 久草极品美女视频在线观看| 黑人性生活视频免费看| 国产午夜福利av导航| 免费看美女脱光衣服的视频| 黄工厂精品视频在线观看 | 好了av中文字幕在线| 亚洲 图片 欧美 图片| 国产高清精品一区二区三区| 日韩a级精品一区二区| 9国产精品久久久久老师| 宅男噜噜噜666国产| 欧美日韩人妻久久精品高清国产| 精内国产乱码久久久久久| 亚洲福利午夜久久久精品电影网 | 2021久久免费视频| 老师让我插进去69AV| 国产精品视频欧美一区二区| 黄色黄色黄片78在线| 日曰摸日日碰夜夜爽歪歪| 男大肉棒猛烈插女免费视频| 日本人竟这样玩学生妹| 久久久精品欧洲亚洲av| 五月婷婷在线观看视频免费| 日韩午夜福利精品试看| 亚洲欧美综合另类13p| 爱爱免费在线观看视频| 97少妇精品在线观看| 91社福利《在线观看| 欧美日韩亚洲国产无线码| 老司机午夜精品视频资源| 午夜精品久久久久麻豆影视| 少妇深喉口爆吞精韩国| 国产精品视频资源在线播放| 姐姐的朋友2在线观看中文字幕 | www日韩毛片av| 免费观看成年人视频在线观看| 人妻激情图片视频小说| 亚洲图库另类图片区| aaa久久久久久久久| 精品人人人妻人人玩日产欧| 99婷婷在线观看视频| 欧美视频不卡一区四区| 久久久久久久久久久免费女人| 三级等保密码要求条款| 伊人综合免费在线视频| 18禁美女羞羞免费网站| 99视频精品全部15| 狠狠地躁夜夜躁日日躁| 亚洲 图片 欧美 图片| 大黑人性xxxxbbbb| 久久免看30视频口爆视频| 91国偷自产一区二区三区精品| 亚洲精品麻豆免费在线观看| 色婷婷六月亚洲综合香蕉| 99精品视频在线观看免费播放| 区一区二区三国产中文字幕| 亚洲精品麻豆免费在线观看 | 天天艹天天干天天操| 国产精品手机在线看片| 91亚洲手机在线视频播放| 熟女俱乐部一二三区| 超pen在线观看视频公开97| 婷婷五月亚洲综合在线| 高潮喷水在线视频观看| 精品人妻伦一二三区久| 青青青青视频在线播放| 亚洲高清国产拍青青草原| 久久精品亚洲成在人线a| 无忧传媒在线观看视频| 亚洲av天堂在线播放| 成年午夜影片国产片| 欧美特色aaa大片| 亚洲国产美女一区二区三区软件 | 日本少妇在线视频大香蕉在线观看| 国产精品国产三级国产午| 国产麻豆乱子伦午夜视频观看| 国产综合高清在线观看| 午夜福利资源综合激情午夜福利资| 男人的天堂av日韩亚洲| 久久这里只有精品热视频 | 性欧美激情久久久久久久| 午夜影院在线观看视频羞羞羞| 99精品久久久久久久91蜜桃| 欧美亚洲国产成人免费在线| 国产高潮无码喷水AV片在线观看| 天天日天天干天天要| 国产欧美精品一区二区高清| 激情色图一区二区三区| 亚洲一级av大片免费观看| 超碰97人人做人人爱| 午夜极品美女福利视频| 欧美色婷婷综合在线| 亚洲精品午夜久久久久| 国产精品久久久久久美女校花| 日本福利午夜电影在线观看| 少妇ww搡性bbb91| 91高清成人在线视频| 男生舔女生逼逼视频| 国产福利小视频二区| 做爰视频毛片下载蜜桃视频1| 成人精品在线观看视频| 97精品成人一区二区三区| 欧美地区一二三专区| 久久久久久久久久一区二区三区| 亚洲狠狠婷婷综合久久app | 久碰精品少妇中文字幕av| 亚洲免费福利一区二区三区| 色哟哟国产精品入口| 91超碰青青中文字幕| 亚洲av第国产精品| 欧洲精品第一页欧洲精品亚洲| nagger可以指黑人吗| 熟女俱乐部一二三区| 青青青国产片免费观看视频| 一区二区三区蜜臀在线| 偷拍自拍国产在线视频| 93精品视频在线观看| 无忧传媒在线观看视频| 在线观看免费av网址大全| 在线可以看的视频你懂的| 亚洲粉嫩av一区二区三区| 特一级特级黄色网片| 日本福利午夜电影在线观看| 中国无遮挡白丝袜二区精品| 伊人综合aⅴ在线网| 欧美日韩激情啪啪啪| 午夜频道成人在线91| 韩国一级特黄大片做受| 91中文字幕最新合集| 欧美性受xx黑人性猛交| 天天插天天色天天日| 亚洲精品 欧美日韩| 无码日韩人妻精品久久| 午夜精品一区二区三区更新| 中文字幕第1页av一天堂网| 亚洲精品国产在线电影| 大香蕉大香蕉在线有码 av| 天干天天天色天天日天天射| 高潮视频在线快速观看国家快速| 天天干天天爱天天色| 久久这里只有精品热视频 | 亚洲人一区二区中文字幕| 亚洲国产欧美一区二区丝袜黑人| 人妻另类专区欧美制服| 2019av在线视频| 1769国产精品视频免费观看| 少妇人妻100系列| 女同互舔一区二区三区| 在线观看911精品国产| 成人蜜桃美臀九一一区二区三区| 中文字幕在线第一页成人| 日本美女性生活一级片| 91精品国产麻豆国产| 插逼视频双插洞国产操逼插洞| 综合精品久久久久97| 少妇被强干到高潮视频在线观看 | 亚洲护士一区二区三区| 亚洲人妻视频在线网| 91国内视频在线观看| 青娱乐在线免费视频盛宴| 绯色av蜜臀vs少妇| 久精品人妻一区二区三区| 久草视频中文字幕在线观看| 国产又粗又黄又硬又爽| 精内国产乱码久久久久久| 欧美亚洲偷拍自拍色图| 午夜大尺度无码福利视频| 亚洲欧美在线视频第一页| 91人妻精品久久久久久久网站 | av老司机精品在线观看| 91欧美在线免费观看| 免费一级黄色av网站| 69精品视频一区二区在线观看| 老鸭窝日韩精品视频观看| 亚洲国产免费av一区二区三区| 国产精品人妻一区二区三区网站| 国产视频在线视频播放| 日韩在线视频观看有码在线| 北条麻妃高跟丝袜啪啪| 久久精品久久精品亚洲人| 成人蜜臀午夜久久一区| 在线观看免费视频色97| 性感美女高潮视频久久久| 搡老妇人老女人老熟女| 又大又湿又爽又紧A视频| 国产极品精品免费视频| 中字幕人妻熟女人妻a62v网| 国产大鸡巴大鸡巴操小骚逼小骚逼| 亚洲国产在人线放午夜| 韩国AV无码不卡在线播放 | 国产精品系列在线观看一区二区| 国产又粗又硬又大视频| 精品区一区二区三区四区人妻 | 五色婷婷综合狠狠爱| 黄页网视频在线免费观看| 久久国产精品精品美女| 人妻丝袜av在线播放网址| 国产综合高清在线观看| 超级福利视频在线观看| 中国黄片视频一区91| 一色桃子人妻一区二区三区| 香蕉aⅴ一区二区三区| 自拍偷区二区三区麻豆| 午夜精品福利91av| 激情人妻校园春色亚洲欧美| 人人妻人人爱人人草| 色爱av一区二区三区| 免费福利av在线一区二区三区| 五月激情婷婷久久综合网| 丝袜亚洲另类欧美变态| 中文字幕最新久久久| 国产97视频在线精品| 啪啪啪啪啪啪啪啪av| 黑人乱偷人妻中文字幕| 69精品视频一区二区在线观看| 精品人妻每日一部精品| 午夜精品在线视频一区| 国产精品黄片免费在线观看| 成人高潮aa毛片免费| 老司机免费福利视频网| 中文字幕亚洲久久久| 懂色av之国产精品| 亚洲美女美妇久久字幕组| 在线成人日韩av电影| 国产揄拍高清国内精品对白| 成熟丰满熟妇高潮xx×xx| 精品一区二区三四区| 亚洲一区二区久久久人妻| 91国产在线视频免费观看| 精品久久婷婷免费视频| 欧美在线一二三视频| 人人妻人人爱人人草| 二区中出在线观看老师| 精品视频一区二区三区四区五区| 午夜精品一区二区三区福利视频| 九九视频在线精品播放| yellow在线播放av啊啊啊 | 78色精品一区二区三区| 亚洲国产精品久久久久久6| 真实国产乱子伦一区二区| 沈阳熟妇28厘米大战黑人| 免费大片在线观看视频网站| 91在线视频在线精品3| 青娱乐蜜桃臀av色| 日本熟妇色熟妇在线观看| 精品区一区二区三区四区人妻| 最新国产亚洲精品中文在线| 国产黄网站在线观看播放| 在线网站你懂得老司机| 日韩人妻在线视频免费| 干逼又爽又黄又免费的视频| 亚洲 自拍 色综合图| 秋霞午夜av福利经典影视| 果冻传媒av一区二区三区| 精品少妇一二三视频在线| jiujiure精品视频在线| 婷婷五月亚洲综合在线| 秋霞午夜av福利经典影视| 5528327男人天堂| 蜜臀成人av在线播放| 精品一区二区三区午夜| 99热国产精品666| 熟女人妻三十路四十路人妻斩| 福利视频一区二区三区筱慧 | 国产一区二区三免费视频 | 精彩视频99免费在线| 日韩精品中文字幕福利| 国产精品成久久久久三级蜜臀av| 久草电影免费在线观看| 成人影片高清在线观看| 亚洲av无码成人精品区辽| av男人天堂狠狠干| 97精品综合久久在线| 中文字幕人妻熟女在线电影| 最新国产精品网址在线观看| 女同互舔一区二区三区| 十八禁在线观看地址免费| 熟女91pooyn熟女| 亚洲专区激情在线观看视频| 66久久久久久久久久久| 国产又粗又猛又爽又黄的视频在线 | 天天综合天天综合天天网| 免费观看国产综合视频| 自拍偷拍一区二区三区图片| 中文字幕av一区在线观看| 天天想要天天操天天干| 在线观看一区二区三级| 男女第一次视频在线观看| 91社福利《在线观看| 亚洲男人的天堂a在线| 亚洲天堂av最新网址| 久久精品在线观看一区二区| lutube在线成人免费看| 老师让我插进去69AV| 欧美日本aⅴ免费视频| 91久久人澡人人添人人爽乱| 大香蕉大香蕉在线有码 av| 欧美在线精品一区二区三区视频 | 开心 色 六月 婷婷| 91快播视频在线观看| 涩爱综合久久五月蜜臀| 久草免费人妻视频在线| 不卡一区一区三区在线| 国产老熟女伦老熟妇ⅹ| 欧美黑人与人妻精品| 国产97视频在线精品| 涩爱综合久久五月蜜臀| 久久久精品欧洲亚洲av| 亚洲 色图 偷拍 欧美| 免费啪啪啪在线观看视频| 男人的网址你懂的亚洲欧洲av| 五月色婷婷综合开心网4438| 亚洲 人妻 激情 中文| 人人妻人人爽人人添夜| 日韩近亲视频在线观看| 蜜桃视频入口久久久| 精品少妇一二三视频在线| 亚洲高清国产一区二区三区| 适合午夜一个人看的视频| 91中文字幕最新合集| 日韩av熟妇在线观看| 午夜频道成人在线91| 中文字幕欧美日韩射射一| 国产成人一区二区三区电影网站 | 无码中文字幕波多野不卡| 黄色无码鸡吧操逼视频| 国产精品久久9999| 丰满少妇人妻xxxxx| 一级黄片大鸡巴插入美女| 99久久中文字幕一本人| 亚洲成高清a人片在线观看| 亚洲日本一区二区三区| 一区二区免费高清黄色视频| 成人网18免费视频版国产| 欧美日本aⅴ免费视频| 午夜福利资源综合激情午夜福利资| 第一福利视频在线观看| 40道精品招牌菜特色| 免费费一级特黄真人片| 全国亚洲男人的天堂| 成年人该看的视频黄免费| 在线观看视频一区麻豆| 亚洲另类图片蜜臀av| 日本乱人一区二区三区| 999九九久久久精品| 日韩精品啪啪视频一道免费| 国产性生活中老年人视频网站| 国产欧美精品一区二区高清 | 99av国产精品欲麻豆| 成人伊人精品色xxxx视频| 亚洲伊人色一综合网| 亚洲成人激情av在线| 水蜜桃一区二区三区在线观看视频| 四川乱子伦视频国产vip| 久久精品美女免费视频| 青春草视频在线免费播放| 亚洲熟女女同志女同| 日韩人妻在线视频免费| 日韩二区视频一线天婷婷五| 黄色大片男人操女人逼| 人妻无码色噜噜狠狠狠狠色| 操的小逼流水的文章| 岛国一区二区三区视频在线| 一区二区三区四区视频| 欧美黑人巨大性xxxxx猛交| 亚洲免费在线视频网站| 久久久超爽一二三av| 亚洲欧美综合另类13p| 日韩熟女av天堂系列| 在线观看免费岛国av| 中文字日产幕乱六区蜜桃|