国产无遮挡裸体免费直播视频,久久精品国产蜜臀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在线观看 | 精品国产午夜视频一区二区| 啪啪啪啪啪啪啪啪啪啪黄色| 亚欧在线视频你懂的| 狠狠躁狠狠爱网站视频| 不卡一区一区三区在线| 同居了嫂子在线播高清中文| 亚洲欧美日韩视频免费观看| 国产免费av一区二区凹凸四季| 91国产资源在线视频| 国产女人被做到高潮免费视频| 欧美性感尤物人妻在线免费看| 适合午夜一个人看的视频| 一区二区三区蜜臀在线| 国产超码片内射在线| 日本www中文字幕| 97人妻人人澡爽人人精品| 欧美精品久久久久久影院| 欧美一区二区三区激情啪啪啪 | 久久久久久久99精品| 9l人妻人人爽人人爽| 一本一本久久a久久精品综合不卡| 免费黄页网站4188| 日本www中文字幕| 亚洲2021av天堂| 成人免费做爰高潮视频| 亚洲午夜精品小视频| 成人伊人精品色xxxx视频| 亚洲少妇高潮免费观看| 日本福利午夜电影在线观看| 欧美日韩不卡一区不区二区| 国产揄拍高清国内精品对白| 国产亚洲视频在线二区| 人妻少妇av在线观看| 日本www中文字幕| 女警官打开双腿沦为性奴| 2022精品久久久久久中文字幕| 免费人成黄页网站在线观看国产 | 蜜桃专区一区二区在线观看| avjpm亚洲伊人久久| 日本少妇高清视频xxxxx| 人妻少妇中文有码精品| 国产高潮无码喷水AV片在线观看| 三级av中文字幕在线观看| 成年人中文字幕在线观看| 青青青国产片免费观看视频| 日本黄在免费看视频| 福利视频网久久91| 免费观看成年人视频在线观看| 国产精品一区二区av国| 亚洲中文字幕校园春色| 欧美80老妇人性视频| 人人妻人人爱人人草| 天天日天天添天天爽| 日韩三级黄色片网站| 91高清成人在线视频| 国产无遮挡裸体免费直播视频| 少妇一区二区三区久久久| 国产日韩av一区二区在线| 动漫黑丝美女的鸡巴| 91精品资源免费观看| 人人爱人人妻人人澡39| 青青青爽视频在线播放| 99的爱精品免费视频| 91免费观看国产免费| 亚洲精品av在线观看| 青青草原网站在线观看| 青青草国内在线视频精选| 日视频免费在线观看| 午夜美女少妇福利视频| 视频一区二区三区高清在线| 亚洲av琪琪男人的天堂| 91大神福利视频网| 亚洲青青操骚货在线视频| 97精品成人一区二区三区 | 亚洲中文字幕综合小综合| 欧美亚洲国产成人免费在线 | 免费黄高清无码国产| av男人天堂狠狠干| 一个人免费在线观看ww视频| 日韩av中文在线免费观看| 2012中文字幕在线高清| 欧美一级色视频美日韩| 都市激情校园春色狠狠| 丰满熟女午夜福利视频| 91免费放福利在线观看| 亚洲一级av无码一级久久精品| 欧美成人黄片一区二区三区 | 亚洲一级av无码一级久久精品| 成年人啪啪视频在线观看| 在线可以看的视频你懂的| 欧美色呦呦最新网址| 亚洲高清国产一区二区三区| 1000部国产精品成人观看视频| 国产欧美精品免费观看视频| 国产亚洲视频在线二区| 国产密臀av一区二区三| 久久丁香花五月天色婷婷| 午夜婷婷在线观看视频| 亚洲图片欧美校园春色| 黄页网视频在线免费观看| 100%美女蜜桃视频| 中文字母永久播放1区2区3区| 亚洲精品午夜aaa久久| 久久热这里这里只有精品| 日韩精品一区二区三区在线播放| 在线免费91激情四射 | 免费十精品十国产网站| av在线播放国产不卡| 日韩亚国产欧美三级涩爱| 亚洲精品国产久久久久久| 国产熟妇人妻ⅹxxxx麻豆| 亚洲国产精品久久久久久6| 老司机午夜精品视频资源| 老司机99精品视频在线观看| 黄色av网站免费在线| 97瑟瑟超碰在线香蕉| 久久精品在线观看一区二区| 日韩欧美国产一区ab| 人人妻人人澡人人爽人人dvl| 人妻熟女在线一区二区| 丁香花免费在线观看中文字幕| 97黄网站在线观看| 成年人的在线免费视频| 精品美女久久久久久| 黑人解禁人妻叶爱071| 黄色男人的天堂视频| 性感美女诱惑福利视频| 欧美地区一二三专区| 亚洲成av人无码不卡影片一| 青青操免费日综合视频观看| 青青青aaaa免费| 国产揄拍高清国内精品对白| AV天堂一区二区免费试看| 国产精品自拍视频大全| 天天综合天天综合天天网| 青青色国产视频在线| 天天干天天操天天扣| 亚洲中文精品人人免费| 在线观看911精品国产| 熟女人妻三十路四十路人妻斩| 快插进小逼里大鸡吧视频| 9久在线视频只有精品| 日本性感美女写真视频| 精品黑人巨大在线一区| 偷拍自拍亚洲视频在线观看| 日韩欧美高清免费在线| 亚洲国产最大av综合| mm131美女午夜爽爽爽| 中文字幕 人妻精品| 91色老99久久九九爱精品| 夜女神免费福利视频| 亚洲另类综合一区小说| 日韩少妇人妻精品无码专区| 黄色资源视频网站日韩| av一本二本在线观看| 黄片色呦呦视频免费看| 中国无遮挡白丝袜二区精品| 国产老熟女伦老熟妇ⅹ| 男大肉棒猛烈插女免费视频| 亚洲推理片免费看网站| 骚逼被大屌狂草视频免费看| 欧美精品资源在线观看| 五十路息与子猛烈交尾视频| 久久这里只有精品热视频| 大肉大捧一进一出好爽在线视频| 日本熟妇色熟妇在线观看| 女同性ⅹxx女同hd| 欧美日本国产自视大全| 日韩精品中文字幕福利| 后入美女人妻高清在线| 中文字幕无码日韩专区免费| 一本一本久久a久久精品综合不卡| 中文字幕在线乱码一区二区| 亚洲av极品精品在线观看| 黄色成年网站午夜在线观看 | 婷婷六月天中文字幕| 亚洲免费在线视频网站| xxx日本hd高清| 97瑟瑟超碰在线香蕉| 午夜成午夜成年片在线观看| 日本性感美女视频网站| 午夜精彩视频免费一区| 日本三极片中文字幕| 精品久久久久久久久久久99| 亚洲欧美清纯唯美另类| 亚洲欧美一卡二卡三卡| 日日夜夜精品一二三| 老鸭窝在线观看一区| 沈阳熟妇28厘米大战黑人| 国产视频在线视频播放| 国产日本精品久久久久久久| 亚洲精品福利网站图片| 日韩av熟妇在线观看| 亚洲欧美在线视频第一页| 日韩影片一区二区三区不卡免费| 天天日天天舔天天射进去| 精品首页在线观看视频| yy96视频在线观看| 国产精品成久久久久三级蜜臀av | 久草免费人妻视频在线| 66久久久久久久久久久| 午夜的视频在线观看| 岛国毛片视频免费在线观看| 视频一区 视频二区 视频| 欧美专区第八页一区在线播放| 早川濑里奈av黑人番号| 99的爱精品免费视频| 人妻无码中文字幕专区| 国产又色又刺激在线视频| asmr福利视频在线观看| 黑人解禁人妻叶爱071| 免费黄页网站4188| 成人高潮aa毛片免费| 91老熟女连续高潮对白| 热99re69精品8在线播放| 亚洲午夜精品小视频| 国产密臀av一区二区三| 福利视频广场一区二区| 超污视频在线观看污污污| 又色又爽又黄又刺激av网站| 大香蕉日本伊人中文在线| 日本韩国免费一区二区三区视频| 青青草原网站在线观看| 黄网十四区丁香社区激情五月天 | 日韩中文字幕精品淫| 自拍 日韩 欧美激情| 中文字幕第一页国产在线| 中文字幕在线观看极品视频| 天堂av狠狠操蜜桃| 国产精品一二三不卡带免费视频 | 亚洲嫩模一区二区三区| 老师让我插进去69AV| av成人在线观看一区| 经典亚洲伊人第一页| 国产三级影院在线观看| 水蜜桃一区二区三区在线观看视频| 亚洲国产在线精品国偷产拍| 五十路熟女av天堂| 偷偷玩弄新婚人妻h视频| 久久久久国产成人精品亚洲午夜| 青娱乐极品视频青青草| 天天干天天爱天天色| 97资源人妻免费在线视频| 91人妻人人做人人爽在线| 好吊操视频这里只有精品| 国产在线一区二区三区麻酥酥 | 日韩特级黄片高清在线看| 91九色国产熟女一区二区| 日本韩国在线观看一区二区| 老熟妇xxxhd老熟女| 亚洲天堂精品福利成人av| 国产精品黄大片在线播放| 亚洲av男人天堂久久| 91自产国产精品视频| 天堂资源网av中文字幕| 男大肉棒猛烈插女免费视频| 国产黄色片蝌蚪九色91| 很黄很污很色的午夜网站在线观看 | 精品人妻伦一二三区久| 亚洲特黄aaaa片| 91色老99久久九九爱精品| 国产成人精品久久二区91| 国产无遮挡裸体免费直播视频| 黄色片年轻人在线观看| 中文字幕视频一区二区在线观看| 2022国产综合在线干| 免费av岛国天堂网站| 老司机免费福利视频网| 99热99这里精品6国产| 日韩近亲视频在线观看| 搡老妇人老女人老熟女| 黄网十四区丁香社区激情五月天| 亚洲一区二区三区五区| 一区二区三区精品日本| 亚洲成人国产综合一区| 可以在线观看的av中文字幕| 直接能看的国产av| 亚洲国产最大av综合| 青青草国内在线视频精选| 女同性ⅹxx女同hd| 少妇人妻久久久久视频黄片| 1区2区3区4区视频在线观看| 日日操夜夜撸天天干| 男人的网址你懂的亚洲欧洲av| 天天日夜夜干天天操| 中文字幕之无码色多多| 国产 在线 免费 精品| 亚洲一区久久免费视频| 欧美黄色录像免费看的| 亚洲va欧美va人人爽3p| 免费黄高清无码国产| 亚洲美女自偷自拍11页| 无码精品一区二区三区人| 91香蕉成人app下载| 中文字幕在线永久免费播放| 天天日天天做天天日天天做| 韩国女主播精品视频网站| 麻豆性色视频在线观看| 香蕉91一区二区三区| 欧美成人小视频在线免费看| 国产又粗又猛又爽又黄的视频美国| 夜夜嗨av蜜臀av| 国产老熟女伦老熟妇ⅹ| av天堂中文免费在线| 传媒在线播放国产精品一区| 中文字幕奴隷色的舞台50| 欧美激情电影免费在线| 午夜久久香蕉电影网| 一二三区在线观看视频| 日曰摸日日碰夜夜爽歪歪| 欧美一区二区三区乱码在线播放| 亚洲男人在线天堂网| 亚洲成人av一区在线| 国产大学生援交正在播放| www日韩毛片av| 人妻丰满熟妇综合网| 在线观看视频一区麻豆| 亚洲成人激情av在线| 97黄网站在线观看| 国产又粗又黄又硬又爽| 日本一二三中文字幕| 亚洲av琪琪男人的天堂| 天天干天天日天天干天天操| 丁香花免费在线观看中文字幕| 欧美成一区二区三区四区| 在线免费观看黄页视频| 国产精品久久久久久久精品视频| 一区二区三区 自拍偷拍| 中文字幕av第1页中文字幕| 亚洲欧美一卡二卡三卡| 亚洲码av无色中文| 中文字幕在线第一页成人 | jul—619中文字幕在线| 色伦色伦777国产精品| 韩国一级特黄大片做受| 蜜桃臀av蜜桃臀av| 日本少妇在线视频大香蕉在线观看 | 另类av十亚洲av| 青青青青青青青在线播放视频| 一区二区三区四区中文| 中文字幕一区二 区二三区四区| 午夜久久久久久久精品熟女| 欧美成人综合视频一区二区| 免费在线福利小视频| 日本韩国免费一区二区三区视频| 99热久久极品热亚洲| 中文人妻AV久久人妻水| 影音先锋女人av噜噜色| 国产97在线视频观看| 一区二区久久成人网| 亚洲少妇高潮免费观看| 福利视频广场一区二区| 中文人妻AV久久人妻水| 在线网站你懂得老司机| 成年人该看的视频黄免费| 国产在线自在拍91国语自产精品| 黄色中文字幕在线播放| 亚洲熟妇久久无码精品| 9久在线视频只有精品| 抽查舔水白紧大视频| 春色激情网欧美成人| 年轻的人妻被夫上司侵犯| 久久免费看少妇高潮完整版| 国产女孩喷水在线观看| 2021国产一区二区| 国产 在线 免费 精品| 97人妻总资源视频| 国产日韩欧美美利坚蜜臀懂色| 欧美黑人性暴力猛交喷水| 国产精品久久久久久久久福交| 日韩伦理短片在线观看| 成人蜜桃美臀九一一区二区三区| 欧美偷拍自拍色图片| 偷拍美女一区二区三区| 国产精品大陆在线2019不卡| 久草视频在线一区二区三区资源站| 一区二区三区四区五区性感视频| 人妻最新视频在线免费观看| 欧美在线精品一区二区三区视频| 97人妻总资源视频| 可以在线观看的av中文字幕| 欧美专区第八页一区在线播放| 99精品久久久久久久91蜜桃| 国产一级精品综合av| 97人妻无码AV碰碰视频| gogo国模私拍视频| 天天操天天操天天碰| 91极品大一女神正在播放| 欧美老妇精品另类不卡片| 精品黑人一区二区三区久久国产| 欧美黄片精彩在线免费观看| 中国视频一区二区三区| 日韩精品中文字幕福利| 精品人妻一二三区久久| 天天操,天天干,天天射| 视频一区二区综合精品| 中文字幕高清资源站| 欧亚乱色一区二区三区| caoporn蜜桃视频| 老司机福利精品视频在线| 免费在线黄色观看网站| 中文字幕日韩无敌亚洲精品| 日本美女成人在线视频| 91传媒一区二区三区| 中文字幕熟女人妻久久久| 国产九色91在线视频| 在线免费观看av日韩| 中文字幕人妻一区二区视频| 国产一区二区在线欧美| 边摸边做超爽毛片18禁色戒| 大鸡巴操b视频在线| 熟妇一区二区三区高清版| 国产亚洲精品视频合集| 日本熟女精品一区二区三区| 日韩精品啪啪视频一道免费| 九九视频在线精品播放| 久久h视频在线观看| 91九色国产熟女一区二区| 18禁免费av网站| 色哟哟国产精品入口| 人妻久久久精品69系列| 欧美亚洲国产成人免费在线 | 美洲精品一二三产区区别| 日韩美av高清在线| 国产不卡av在线免费| 好太好爽好想要免费| 久久久91蜜桃精品ad| 亚洲av自拍偷拍综合| 亚洲 图片 欧美 图片| 强行扒开双腿猛烈进入免费版 | 播放日本一区二区三区电影| 晚上一个人看操B片| 国产三级影院在线观看| 黄色大片男人操女人逼| 日韩精品一区二区三区在线播放| 日本免费视频午夜福利视频| 午夜免费观看精品视频| 二区中出在线观看老师| 亚洲精品色在线观看视频| japanese日本熟妇另类| 天干天天天色天天日天天射| caoporn蜜桃视频| 日本午夜爽爽爽爽爽视频在线观看 | 午夜免费观看精品视频| 粉嫩欧美美人妻小视频| 黑人大几巴狂插日本少妇| 98精产国品一二三产区区别| 免费69视频在线看| 亚洲激情av一区二区| 天天操天天干天天艹| 成人免费毛片aaaa| 神马午夜在线观看视频| 国产欧美精品不卡在线| 成人免费做爰高潮视频| 日韩欧美国产精品91| 最新中文字幕免费视频| 肏插流水妹子在线乐播下载| 99热久久这里只有精品| 日韩美女搞黄视频免费| 国产精品自拍视频大全| 亚洲人妻国产精品综合| 日本一本午夜在线播放| 精品成人午夜免费看| 欧美亚洲自偷自拍 在线| 国产熟妇人妻ⅹxxxx麻豆| 综合页自拍视频在线播放| 年轻的人妻被夫上司侵犯| 亚洲欧美国产麻豆综合| 日韩成人性色生活片| 大尺度激情四射网站| 久久精品久久精品亚洲人| av大全在线播放免费| 亚洲成a人片777777| 久久久久久久久久一区二区三区| 最新的中文字幕 亚洲| 果冻传媒av一区二区三区| 2020久久躁狠狠躁夜夜躁| 国产精品一二三不卡带免费视频| 精品视频国产在线观看| 日韩美女搞黄视频免费| 操日韩美女视频在线免费看| 看一级特黄a大片日本片黑人| 影音先锋女人av噜噜色| gogo国模私拍视频| 啪啪啪啪啪啪啪啪av| 亚洲午夜精品小视频| 午夜精品久久久久麻豆影视| 国产在线拍揄自揄视频网站| 中文字幕亚洲久久久| 亚洲Av无码国产综合色区| 午夜久久久久久久99| 亚洲一级av大片免费观看| 欧美一区二区三区乱码在线播放| 日韩中文字幕精品淫| 久久这里只有精品热视频 | 国产午夜男女爽爽爽爽爽视频| 大香蕉大香蕉在线有码 av| 超碰在线观看免费在线观看| 国产黑丝高跟鞋视频在线播放| 青青草在观免费国产精品| 免费十精品十国产网站| 欧洲日韩亚洲一区二区三区| 成人24小时免费视频| 日韩欧美在线观看不卡一区二区| 激情色图一区二区三区| 日本一区二区三区免费小视频| 日本男女操逼视频免费看| 91精品国产观看免费| 视频一区 二区 三区 综合| 91桃色成人网络在线观看| 亚洲一区自拍高清免费视频| 91精品激情五月婷婷在线| 亚洲一区二区久久久人妻| 久久这里有免费精品| 中文字幕一区二 区二三区四区 | 亚洲无码一区在线影院| 成人免费公开视频无毒| 午夜精彩视频免费一区| 中文字幕日韩精品就在这里| 中国黄色av一级片| 青青青青操在线观看免费| av中文字幕福利网| 偷拍自拍国产在线视频| 搡老妇人老女人老熟女| av中文字幕电影在线看| 亚洲综合一区二区精品久久| 日本乱人一区二区三区| 91破解版永久免费| 国产高潮无码喷水AV片在线观看| 精品少妇一二三视频在线| 日本三极片视频网站观看| 人妻丝袜精品中文字幕| 国产露脸对白在线观看| 国产老熟女伦老熟妇ⅹ| 亚洲精品精品国产综合| 天天艹天天干天天操| 青娱乐极品视频青青草| 动漫黑丝美女的鸡巴| 国产又粗又黄又硬又爽| 成年人该看的视频黄免费| 日韩a级精品一区二区| 蜜桃久久久久久久人妻| 天天操夜夜骑日日摸| 亚洲成人激情视频免费观看了| 日韩a级精品一区二区| ka0ri在线视频| 人妻丝袜av在线播放网址| 亚洲欧美综合在线探花| 亚洲av无硬久久精品蜜桃| 国产一区成人在线观看视频| lutube在线成人免费看| 老熟妇xxxhd老熟女| 免费男阳茎伸入女阳道视频| 欧美精品免费aaaaaa| 亚洲视频乱码在线观看| 99re久久这里都是精品视频| 激情小视频国产在线| 美女大bxxxx内射| 中文字幕无码一区二区免费| av中文字幕网址在线| 亚洲av午夜免费观看| 精品欧美一区二区vr在线观看| 久久久人妻一区二区| 中文字幕av第1页中文字幕| 青娱乐蜜桃臀av色| 操操网操操伊剧情片中文字幕网| 亚洲激情偷拍一区二区| 国产精品久久9999| 亚洲免费福利一区二区三区| 国产清纯美女al在线| 亚洲中文字幕校园春色| 一区二区熟女人妻视频| 大学生A级毛片免费视频| 一级a看免费观看网站| 日韩欧美亚洲熟女人妻| 久久久久久久久久久久久97| 久久久91蜜桃精品ad| 97精品综合久久在线| sejizz在线视频| 91av精品视频在线| 天天操天天干天天插| 欧美日韩在线精品一区二区三| 中文字幕日韩精品日本| 日韩成人性色生活片| 中文字幕人妻av在线观看| 欧美久久久久久三级网| 国产janese在线播放| 午夜精品久久久久麻豆影视| 亚洲精品在线资源站| 视频 国产 精品 熟女 | 偷拍自拍亚洲美腿丝袜| 欧美成人综合色在线噜噜| 亚洲午夜福利中文乱码字幕| 国产女人被做到高潮免费视频| 熟女少妇激情五十路| 夜夜嗨av一区二区三区中文字幕| av破解版在线观看| 亚洲av无硬久久精品蜜桃| 91天堂天天日天天操| 精品高跟鞋丝袜一区二区| 亚洲人人妻一区二区三区| 无码日韩人妻精品久久| 国产内射中出在线观看| 中字幕人妻熟女人妻a62v网| 亚洲综合在线视频可播放| 熟女俱乐部一二三区| 淫秽激情视频免费观看| 毛片一级完整版免费| 东游记中文字幕版哪里可以看到| 老鸭窝在线观看一区| 午夜美女福利小视频| 久久久人妻一区二区| 久久精品国产23696| 粉嫩av蜜乳av蜜臀| 亚洲福利精品福利精品福利| 夫妻在线观看视频91| 国产精品久久久久久美女校花| 91极品新人『兔兔』精品新作| 亚洲成人熟妇一区二区三区| 最新国产精品拍在线观看| 亚洲av色香蕉一区二区三区| 国产 在线 免费 精品| 骚货自慰被发现爆操| 国内自拍第一页在线观看| 97资源人妻免费在线视频| 色哟哟国产精品入口| 手机看片福利盒子日韩在线播放| 五月精品丁香久久久久福利社| 中文字幕免费福利视频6| 国产一区二区久久久裸臀| 亚洲福利精品福利精品福利| 色在线观看视频免费的| 人妻少妇亚洲一区二区| 久久久久久久亚洲午夜综合福利| 亚洲图库另类图片区| 天天艹天天干天天操| 婷婷色国产黑丝少妇勾搭AV | 这里有精品成人国产99| 日韩三级黄色片网站| 成年午夜影片国产片| 成熟熟女国产精品一区| 福利一二三在线视频观看| 国产精品免费不卡av| caoporm超碰国产| 丰满的继坶3中文在线观看| 亚洲熟妇久久无码精品| 日韩中文字幕在线播放第二页| 亚洲熟色妇av日韩熟色妇在线| 亚洲av无硬久久精品蜜桃| 亚洲人人妻一区二区三区| 好了av中文字幕在线| 动色av一区二区三区| 国产夫妻视频在线观看免费 | 亚洲精品福利网站图片| 欧美视频综合第一页| 久久精品久久精品亚洲人| 久久艹在线观看视频| 亚洲精品av在线观看| 性色蜜臀av一区二区三区| 中文字幕奴隷色的舞台50| 国产精品大陆在线2019不卡| 成人av在线资源网站| 日本五十路熟新垣里子| www,久久久,com| 青青青青青免费视频| 自拍偷拍 国产资源| 在线免费观看欧美小视频| 青青青青青青青在线播放视频| 十八禁在线观看地址免费| 自拍偷拍一区二区三区图片| 天天干天天日天天干天天操 | 九九视频在线精品播放| 粉嫩欧美美人妻小视频| 天天日天天添天天爽| 黄色视频在线观看高清无码| 2021最新热播中文字幕| 久草视频在线一区二区三区资源站| 水蜜桃一区二区三区在线观看视频| 二区中出在线观看老师| 国产女人被做到高潮免费视频 | 99热久久这里只有精品8| 欧美成人精品在线观看| 国产美女精品福利在线| 久久久久久久久久久久久97| 亚洲综合另类精品小说| 天天摸天天日天天操| 97精品人妻一区二区三区精品| 插逼视频双插洞国产操逼插洞| 欧美精产国品一二三区| 欧美日韩情色在线观看| 日韩人妻xxxxx| 日本熟女精品一区二区三区| 在线亚洲天堂色播av电影| 亚洲一区二区三区久久受| 国产一区成人在线观看视频 | 日本在线不卡免费视频| 黄色在线观看免费观看在线| 青青青青在线视频免费观看| 午夜极品美女福利视频| 免费看美女脱光衣服的视频| 馒头大胆亚洲一区二区| 果冻传媒av一区二区三区 | 黄片三级三级三级在线观看| 北条麻妃高跟丝袜啪啪| aiss午夜免费视频| 好太好爽好想要免费| 韩国一级特黄大片做受| 手机看片福利盒子日韩在线播放 | 韩国一级特黄大片做受| 欧美综合婷婷欧美综合| 亚洲国产第一页在线观看| 在线国产中文字幕视频| 99精品国产自在现线观看| 无码日韩人妻精品久久| 青青草成人福利电影| 久久艹在线观看视频| 欧美黑人与人妻精品| 亚洲精品 欧美日韩| 2012中文字幕在线高清| 第一福利视频在线观看| 午夜大尺度无码福利视频| 国产高清女主播在线| 亚洲 欧美 自拍 偷拍 在线| 人人妻人人澡欧美91精品| 激情图片日韩欧美人妻| 成人亚洲精品国产精品| 天天干天天搞天天摸| 少妇高潮无套内谢麻豆| 欧洲国产成人精品91铁牛tv| 精品一区二区三四区| 无套猛戳丰满少妇人妻| 人人妻人人人操人人人爽| 狠狠的往里顶撞h百合| 国产久久久精品毛片| 日本一区二区三区免费小视频| 93视频一区二区三区| 午夜dv内射一区区| 欧美老妇精品另类不卡片| 家庭女教师中文字幕在线播放| 成人高清在线观看视频| 欧美一区二区三区乱码在线播放| 欧美亚洲一二三区蜜臀| 亚洲av在线观看尤物| 青草久久视频在线观看| 绝色少妇高潮3在线观看| 一个人免费在线观看ww视频| 欧美一区二区三区高清不卡tv | 在线播放一区二区三区Av无码| 91天堂精品一区二区| 国产精品系列在线观看一区二区| 1区2区3区4区视频在线观看| 99热99re在线播放| 98视频精品在线观看| 91色秘乱一区二区三区| av森泽佳奈在线观看| 亚洲熟妇x久久av久久| 一级黄色片夫妻性生活| 特大黑人巨大xxxx| 成人久久精品一区二区三区| 九色精品视频在线播放| 亚洲日本一区二区三区| 中文字幕在线乱码一区二区| 国产视频网站国产视频| 亚洲精品 日韩电影| 美女少妇亚洲精选av| 大鸡巴操b视频在线| 欧美日韩一区二区电影在线观看| 人妻无码色噜噜狠狠狠狠色| 亚洲国产精品免费在线观看| 人妻熟女中文字幕aⅴ在线| 亚洲国产最大av综合| 国产欧美精品一区二区高清| 国产精品欧美日韩区二区| 制丝袜业一区二区三区| 超碰97免费人妻麻豆| 和邻居少妇愉情中文字幕| 久久农村老妇乱69系列| 美女张开腿让男生操在线看| 亚洲精品精品国产综合| 欧美中文字幕一区最新网址| 91精品免费久久久久久| 在线免费观看日本伦理| 人人妻人人人操人人人爽| 狠狠操狠狠操免费视频| 亚洲最大黄 嗯色 操 啊| 青青青爽视频在线播放| 高清成人av一区三区| 欧美亚洲少妇福利视频| 精品美女福利在线观看| 亚洲av日韩精品久久久久久hd| 亚洲综合一区二区精品久久| 人妻av无码专区久久绿巨人| 天天想要天天操天天干| 国产精品3p和黑人大战| 婷婷五月亚洲综合在线| 99久久成人日韩欧美精品| 成年美女黄网站18禁久久| 人人在线视频一区二区| 九色精品视频在线播放| 人人超碰国字幕观看97| 91精品资源免费观看| 视频一区 二区 三区 综合| a v欧美一区=区三区| 好男人视频在线免费观看网站| 亚洲国产在人线放午夜| 欧美日韩熟女一区二区三区| 午夜影院在线观看视频羞羞羞| 黄色黄色黄片78在线| 女生自摸在线观看一区二区三区| 欧美aa一级一区三区四区| 美味人妻2在线播放| 成人福利视频免费在线| 一区二区三区激情在线| 天天日天天干天天插舔舔| 夜女神免费福利视频| 99精品一区二区三区的区| 国产又粗又黄又硬又爽| 亚洲一区久久免费视频| 国产三级片久久久久久久| 国产超码片内射在线| 亚洲熟妇无码一区二区三区| 久久精品亚洲成在人线a| 11久久久久久久久久久| 中文字幕av一区在线观看| 国产精品视频男人的天堂| 精品一区二区三区欧美| 天天操夜夜操天天操天天操 | 91精品国产综合久久久蜜| 男人的天堂一区二区在线观看| 国产刺激激情美女网站| 99热国产精品666| 国产第一美女一区二区三区四区| 午夜青青草原网在线观看| 精品国产乱码一区二区三区乱| 91精品视频在线观看免费| 777奇米久久精品一区| 97精品人妻一区二区三区精品| 青青草亚洲国产精品视频| 日韩av有码中文字幕| 欧美成人小视频在线免费看| 国产性感美女福利视频| 在线国产中文字幕视频| 99热99这里精品6国产| av久久精品北条麻妃av观看| 久久精品久久精品亚洲人| 日韩人妻xxxxx| 动漫美女的小穴视频| av中文字幕在线导航| 亚洲福利天堂久久久久久| 日韩欧美一级精品在线观看| 91自产国产精品视频| 天天操天天干天天插| 91‖亚洲‖国产熟女| 精品久久久久久高潮| 大鸡吧插入女阴道黄色片| 在线免费视频 自拍| 中文字幕乱码人妻电影| 精内国产乱码久久久久久| 中文字幕第一页国产在线| 一区二区三区精品日本| 人妻无码中文字幕专区| brazzers欧熟精品系列| 精品人人人妻人人玩日产欧| 中文字幕一区二区亚洲一区| 欧美一级片免费在线成人观看| 在线免费视频 自拍| 国产使劲操在线播放| 1769国产精品视频免费观看| 一区二区视频视频视频| 精品av国产一区二区三区四区| 国产视频网站一区二区三区| 日韩二区视频一线天婷婷五| mm131美女午夜爽爽爽| 天天摸天天干天天操科普| 激情综合治理六月婷婷| 初美沙希中文字幕在线| 欧美亚洲自偷自拍 在线| 2012中文字幕在线高清| 中文乱理伦片在线观看| 欧美va不卡视频在线观看| 亚洲天堂有码中文字幕视频| 日韩av大胆在线观看| 午夜精品一区二区三区更新| 一区二区三区综合视频| 综合激情网激情五月天| 日本一道二三区视频久久 | 亚洲男人让女人爽的视频| 日本www中文字幕| 91久久综合男人天堂| 亚洲一区久久免费视频| 欧美aa一级一区三区四区| 97人妻夜夜爽二区欧美极品| 女蜜桃臀紧身瑜伽裤| 人人爽亚洲av人人爽av| 亚洲自拍偷拍综合色| 久久久麻豆精亚洲av麻花| 中文字幕一区二区三区人妻大片| 欧美性感尤物人妻在线免费看| 亚洲国产欧美国产综合在线| 大肉大捧一进一出好爽在线视频| 婷婷色国产黑丝少妇勾搭AV| 和邻居少妇愉情中文字幕| 91中文字幕免费在线观看| 二区中出在线观看老师| 93人妻人人揉人人澡人人| 欧美成人猛片aaaaaaa| 男人的天堂在线黄色| h国产小视频福利在线观看| 色婷婷精品大在线观看| 欧美精产国品一二三区| 日本av熟女在线视频| 国产亚洲四十路五十路| 啪啪啪18禁一区二区三区| 社区自拍揄拍尻屁你懂的 | 国产极品美女久久久久久| 中字幕人妻熟女人妻a62v网| 免费十精品十国产网站| 女同性ⅹxx女同h偷拍| 亚洲人妻视频在线网| 中文字幕人妻av在线观看 | 夫妻在线观看视频91| 免费观看丰满少妇做受| 色天天天天射天天舔| 18禁精品网站久久| 91欧美在线免费观看| 国产午夜无码福利在线看| 久久久久久cao我的性感人妻 | 一区二区三区日本伦理| 久草视频首页在线观看| 天堂av在线官网中文| 免费在线黄色观看网站| 第一福利视频在线观看| 国产精品久久久久国产三级试频| 日本免费视频午夜福利视频| av亚洲中文天堂字幕网| 又粗又长 明星操逼小视频| 亚洲熟妇久久无码精品| 在线观看视频网站麻豆| 国产精品久久久久国产三级试频| 午夜蜜桃一区二区三区| 91麻豆精品久久久久| 成人免费公开视频无毒| 亚洲中文精品字幕在线观看| yy6080国产在线视频| av网址在线播放大全| 99精品免费久久久久久久久a| 亚洲粉嫩av一区二区三区| 免费看国产又粗又猛又爽又黄视频 | 少妇与子乱在线观看| 免费岛国喷水视频在线观看 | 九色porny九色9l自拍视频| 一区二区三区久久久91| 非洲黑人一级特黄片| 99婷婷在线观看视频| 成年人该看的视频黄免费| 婷婷色国产黑丝少妇勾搭AV| 在线亚洲天堂色播av电影| 91啪国自产中文字幕在线| 午夜精品久久久久久99热| 老熟妇xxxhd老熟女| 亚洲av人人澡人人爽人人爱| 亚洲另类在线免费观看| 午夜精品九一唐人麻豆嫩草成人| 国产九色91在线视频| 综合精品久久久久97| 久久综合老鸭窝色综合久久| 国产a级毛久久久久精品| 黄色视频成年人免费观看| 黑人大几巴狂插日本少妇| 99re国产在线精品| 国产精品伦理片一区二区| 黄色大片免费观看网站| 午夜精品一区二区三区4| 日本精品一区二区三区在线视频。| 北条麻妃肉色丝袜视频| 99一区二区在线观看| 喷水视频在线观看这里只有精品| 国产精品入口麻豆啊啊啊 | 午夜频道成人在线91| 国产精品久久久久网| av在线资源中文字幕| 蜜桃专区一区二区在线观看| 91快播视频在线观看| 91九色porny国产蝌蚪视频| 天天操天天操天天碰| 亚洲少妇高潮免费观看| 最新欧美一二三视频| 午夜精品福利一区二区三区p| 免费无码人妻日韩精品一区二区 | 国产精品探花熟女在线观看| 国产精品视频一区在线播放| 午夜在线精品偷拍一区二 | 国产精品久久久久网| 国产午夜亚洲精品麻豆| 精品suv一区二区69| 一区二区三区麻豆福利视频| 日韩伦理短片在线观看| 亚洲福利午夜久久久精品电影网| 99精品免费久久久久久久久a| 97人妻无码AV碰碰视频| 18禁美女无遮挡免费| 宅男噜噜噜666国产| 蝴蝶伊人久久中文娱乐网| 黑人变态深video特大巨大| 亚洲成人黄色一区二区三区| 一区二区三区在线视频福利| 在线观看视频污一区| 日本一本午夜在线播放| 97精品综合久久在线| 在线观看国产免费麻豆| 一区二区三区综合视频| av中文字幕福利网| 91色网站免费在线观看| 不卡日韩av在线观看| 午夜精品久久久久久99热| 最新中文字幕乱码在线| 最后99天全集在线观看| 馒头大胆亚洲一区二区| 婷婷综合蜜桃av在线| 播放日本一区二区三区电影| 美女被肏内射视频网站| 午夜久久香蕉电影网| av亚洲中文天堂字幕网| 55夜色66夜色国产精品站| 黑人性生活视频免费看| 一级黄色片夫妻性生活| 女人精品内射国产99| 无码精品一区二区三区人| 强行扒开双腿猛烈进入免费版 | 欧美80老妇人性视频| av破解版在线观看| 国产日韩一区二区在线看| 真实国模和老外性视频| 懂色av蜜桃a v| 男生舔女生逼逼的视频| 97人妻无码AV碰碰视频| 国产乱子伦一二三区| 91极品大一女神正在播放| 污污小视频91在线观看| 欧美 亚洲 另类综合| 天天干天天操天天插天天日| 成人免费做爰高潮视频| 一二三中文乱码亚洲乱码one | 狠狠躁狠狠爱网站视频| 亚洲 中文 自拍 另类 欧美| 扒开让我视频在线观看| 青青草精品在线视频观看| 骚逼被大屌狂草视频免费看| 亚洲日产av一区二区在线| 9色精品视频在线观看| 大屁股肉感人妻中文字幕在线| 91天堂精品一区二区| 大鸡吧插入女阴道黄色片| 中文字日产幕乱六区蜜桃| 国产欧美精品不卡在线| 自拍偷拍亚洲欧美在线视频| avjpm亚洲伊人久久| 日本丰满熟妇大屁股久久| 免费看国产又粗又猛又爽又黄视频| 亚洲激情av一区二区| 久久久久久久久久一区二区三区| 亚洲成人激情av在线| 亚洲一区二区人妻av| 无忧传媒在线观看视频| 66久久久久久久久久久| 青青青青青青青在线播放视频| 日韩视频一区二区免费观看| 黄色中文字幕在线播放| 性生活第二下硬不起来| 很黄很污很色的午夜网站在线观看 | 91 亚洲视频在线观看| 扒开腿挺进肉嫩小18禁视频| 天堂va蜜桃一区入口| 国产在线免费观看成人| 自拍 日韩 欧美激情| 男人的天堂一区二区在线观看| 韩国三级aaaaa高清视频| 91精品国产麻豆国产| avjpm亚洲伊人久久| 欧美中文字幕一区最新网址| 欧美精品中文字幕久久二区| 久久精品亚洲成在人线a| 阿v天堂2014 一区亚洲| 动漫黑丝美女的鸡巴| 在线观看成人国产电影| 午夜青青草原网在线观看| 亚洲另类综合一区小说| 91亚洲手机在线视频播放| 亚洲另类图片蜜臀av| 五十路丰满人妻熟妇| 香蕉aⅴ一区二区三区| 国产黄色片蝌蚪九色91| 国产在线免费观看成人| 天天日夜夜干天天操| 激情小视频国产在线| 亚洲精品三级av在线免费观看| 天天操天天爽天天干| 精品区一区二区三区四区人妻 | 青青在线视频性感少妇和隔壁黑丝| 婷婷午夜国产精品久久久| 亚洲精品一区二区三区老狼| 中文字幕之无码色多多| 国产片免费观看在线观看| 亚国产成人精品久久久| 成熟丰满熟妇高潮xx×xx| 国产亚洲精品欧洲在线观看| 一级黄色片夫妻性生活| 视频久久久久久久人妻| 亚洲区欧美区另类最新章节| 亚洲免费视频欧洲免费视频| 91福利视频免费在线观看| 日韩亚洲高清在线观看| 福利午夜视频在线合集| 福利一二三在线视频观看| 99精品国自产在线人| 国产成人精品av网站| 精品少妇一二三视频在线| 欧美一级片免费在线成人观看| 国产黄色片在线收看| jiujiure精品视频在线| 在线免费观看日本伦理| 国产精品精品精品999| 国产在线观看黄色视频| 黄色视频在线观看高清无码| 91免费福利网91麻豆国产精品| 在线视频精品你懂的| 亚洲一区制服丝袜美腿| 538精品在线观看视频| 亚洲人妻视频在线网| 亚洲一级av大片免费观看| 黄工厂精品视频在线观看| 狍和女人的王色毛片| 五十路熟女人妻一区二| av高潮迭起在线观看| 国产品国产三级国产普通话三级| 熟女人妻在线观看视频| 插逼视频双插洞国产操逼插洞| mm131美女午夜爽爽爽| 日韩欧美制服诱惑一区在线| 一区二区三区日本伦理| 国产精品久久久久久久精品视频| 天天草天天色天天干| 好吊视频—区二区三区| eeuss鲁片一区二区三区| 好男人视频在线免费观看网站| av视屏免费在线播放| 天天夜天天日天天日| 玖玖一区二区在线观看| 一区二区三区日韩久久| 在线新三级黄伊人网| 国产精品久久9999| 漂亮 人妻被中出中文| 久久热这里这里只有精品| av成人在线观看一区| 中文亚洲欧美日韩无线码| 亚洲欧美一卡二卡三卡| 亚洲欧美综合另类13p| 日日操综合成人av| 一二三区在线观看视频| 中文字幕视频一区二区在线观看| av在线播放国产不卡| 久久免看30视频口爆视频| 欧美视频一区免费在线| 特一级特级黄色网片| 亚洲精品三级av在线免费观看| 丝袜肉丝一区二区三区四区在线| 午夜毛片不卡免费观看视频 | 中文字幕av一区在线观看| 国产女人被做到高潮免费视频 | 午夜精品一区二区三区更新| 果冻传媒av一区二区三区| av中文字幕网址在线| 黄色大片免费观看网站| 天天干天天操天天玩天天射| 午夜成午夜成年片在线观看| 亚洲国产欧美一区二区三区…| 精品91自产拍在线观看一区| 久久精品国产亚洲精品166m| 男女之间激情网午夜在线| 欧美视频综合第一页| 国产av欧美精品高潮网站| 青青青aaaa免费| 狠狠躁夜夜躁人人爽天天久天啪| 中文字幕人妻熟女在线电影| 制服丝袜在线人妻中文字幕| 快插进小逼里大鸡吧视频| 欧美3p在线观看一区二区三区| 国产精品福利小视频a| 亚洲区美熟妇久久久久| 成年午夜影片国产片| 大鸡巴操b视频在线| 欧美日韩国产一区二区三区三州| 91社福利《在线观看| 日本熟妇色熟妇在线观看| 欧美黑人性猛交xxxxⅹooo| 亚洲高清国产拍青青草原| 成人av中文字幕一区| 视频一区 二区 三区 综合| 日韩精品电影亚洲一区| 天天日天天爽天天干| 色狠狠av线不卡香蕉一区二区| 精品av国产一区二区三区四区| 91she九色精品国产| 日本韩国免费一区二区三区视频| 免费观看成年人视频在线观看 | 99的爱精品免费视频| 成人高清在线观看视频| 啪啪啪操人视频在线播放| 天天通天天透天天插| 国产亚洲国产av网站在线| 亚洲老熟妇日本老妇| 亚洲的电影一区二区三区| av中文字幕电影在线看| 免费观看丰满少妇做受| 人妻少妇精品久久久久久| 国产精品黄大片在线播放| 国产成人精品福利短视频| 亚洲成人情色电影在线观看| 亚洲国产精品久久久久久6| 亚洲视频在线观看高清| 91精品高清一区二区三区| h国产小视频福利在线观看| 骚货自慰被发现爆操| 91九色porny国产在线| 亚洲人人妻一区二区三区| 日韩美女精品视频在线观看网站| 国产成人精品久久二区91| 亚洲欧美另类自拍偷拍色图| 日韩av中文在线免费观看| 天天日天天添天天爽| 一二三区在线观看视频| 亚洲av第国产精品| 亚洲激情av一区二区| gay gay男男瑟瑟在线网站| 老熟妇xxxhd老熟女| 精品日产卡一卡二卡国色天香 | 日曰摸日日碰夜夜爽歪歪| 超污视频在线观看污污污| 夜夜嗨av蜜臀av| 午夜精品一区二区三区更新| 男生用鸡操女生视频动漫 | 亚洲嫩模一区二区三区| 男大肉棒猛烈插女免费视频| 天天干天天搞天天摸| 国产亚州色婷婷久久99精品| 一区二区三区四区视频| 91she九色精品国产| 韩国亚洲欧美超一级在线播放视频| 91人妻人人做人人爽在线| 亚洲一区二区三区uij| 日日爽天天干夜夜操| 操人妻嗷嗷叫视频一区二区| 美女操逼免费短视频下载链接| 国产超码片内射在线| 激情国产小视频在线| 中文字幕日韩精品日本| 日本黄色三级高清视频| 国产福利在线视频一区| 大香蕉玖玖一区2区| 亚洲天天干 夜夜操| 亚洲av日韩精品久久久久久hd| 97精品视频在线观看| 91人妻精品久久久久久久网站| 久久热这里这里只有精品| av中文字幕网址在线| 日日爽天天干夜夜操| 综合一区二区三区蜜臀| 视频一区 视频二区 视频| 国产在线91观看免费观看| 午夜精品久久久久久99热| 国产精品黄色的av| 在线国产精品一区二区三区| 91麻豆精品传媒国产黄色片| 青青在线视频性感少妇和隔壁黑丝| 视频在线免费观看你懂得| 国产精品人妻一区二区三区网站| 午夜dv内射一区区| 国产自拍在线观看成人| 精品欧美一区二区vr在线观看| 美女福利视频网址导航| 午夜精品福利一区二区三区p| 偷拍自拍 中文字幕| 亚洲av无码成人精品区辽| 中文字幕第一页国产在线| 啪啪啪啪啪啪啪免费视频| 色哟哟在线网站入口| 天天干天天插天天谢| 91久久精品色伊人6882| 岛国免费大片在线观看| 欧美专区第八页一区在线播放| 91小伙伴中女熟女高潮| 97人妻色免费视频| 搡老熟女一区二区在线观看| 天天干夜夜操天天舔| 欧美美女人体视频一区| 制丝袜业一区二区三区| av老司机亚洲一区二区| 亚洲av第国产精品| 888欧美视频在线| 内射久久久久综合网| 美女视频福利免费看| 中文字幕一区二区三区蜜月| 久久免费看少妇高潮完整版| 欧美一区二区三区久久久aaa| 国产97在线视频观看| 沙月文乃人妻侵犯中文字幕在线 | www日韩毛片av| 97资源人妻免费在线视频| 久久精品视频一区二区三区四区 | 国产91久久精品一区二区字幕| 天天操天天操天天碰| 日韩少妇人妻精品无码专区| 91大神福利视频网| 亚洲 中文 自拍 另类 欧美| 人妻av无码专区久久绿巨人| 在线观看免费av网址大全| 老司机99精品视频在线观看| 成人亚洲精品国产精品| 亚洲少妇高潮免费观看| 国产91久久精品一区二区字幕| 特大黑人巨大xxxx| 天堂va蜜桃一区入口| 日本免费午夜视频网站| 日本真人性生活视频免费看| 欧美成人猛片aaaaaaa| 视频在线免费观看你懂得| 人妻另类专区欧美制服| 日本韩国亚洲综合日韩欧美国产 | 天天摸天天亲天天舔天天操天天爽| 78色精品一区二区三区| 欧美成人综合视频一区二区 | 制丝袜业一区二区三区| 38av一区二区三区| 色综合久久久久久久久中文| 东游记中文字幕版哪里可以看到| 2o22av在线视频| 免费福利av在线一区二区三区| 91av精品视频在线| 四川乱子伦视频国产vip| 白嫩白嫩美女极品国产在线观看| 东京干手机福利视频| 国产欧美精品免费观看视频| 久久精品美女免费视频| 热久久只有这里有精品| 亚洲va天堂va国产va久| 91大神福利视频网| 欧美一区二区三区在线资源 | 国产妇女自拍区在线观看| 国产一区自拍黄视频免费观看| 国产九色91在线视频| 天天色天天操天天舔| 大屁股肉感人妻中文字幕在线| 国产亚洲成人免费在线观看| 男女啪啪视频免费在线观看 | 国产第一美女一区二区三区四区| www天堂在线久久| 任你操视频免费在线观看| 青青青艹视频在线观看| 亚洲一区二区三区久久午夜| 丰满少妇翘臀后进式| 国产午夜福利av导航| 视频 一区二区在线观看| 黄色视频在线观看高清无码| 日韩北条麻妃一区在线| 欧美日韩一区二区电影在线观看| 日本一二三区不卡无| 亚洲精品无码色午夜福利理论片| 精彩视频99免费在线| 欧亚日韩一区二区三区观看视频| 大香蕉玖玖一区2区| 亚洲精品 欧美日韩| 黄片大全在线观看观看| 专门看国产熟妇的网站| 午夜福利资源综合激情午夜福利资| 超鹏97历史在线观看| 激情五月婷婷综合色啪| 开心 色 六月 婷婷| 美女福利视频网址导航| 亚洲伊人av天堂有码在线| 亚洲福利天堂久久久久久| 一区二区三区av高清免费| 大尺度激情四射网站| 熟女在线视频一区二区三区| 欧美黄色录像免费看的| 亚洲综合在线视频可播放| 天天日天天玩天天摸| 91麻豆精品久久久久| 久久久久久久久久性潮| 自拍偷拍一区二区三区图片| 自拍偷拍vs一区二区三区| 在线观看视频一区麻豆| 婷婷综合蜜桃av在线| 干逼又爽又黄又免费的视频| 国产精品久久久久久美女校花| 丝袜肉丝一区二区三区四区在线| av网站色偷偷婷婷网男人的天堂| 男人的天堂一区二区在线观看| 人妻无码色噜噜狠狠狠狠色| 精品黑人一区二区三区久久国产| 久久亚洲天堂中文对白| 99国内小视频在现欢看| 国产日韩av一区二区在线| 久久久超爽一二三av| 久久久久久性虐视频| 天天草天天色天天干| 亚洲另类综合一区小说| 黄色男人的天堂视频| 欧美亚洲中文字幕一区二区三区 | 粉嫩欧美美人妻小视频| 久久农村老妇乱69系列| 日本成人一区二区不卡免费在线| 在线观看国产免费麻豆| 日韩成人综艺在线播放| 久久麻豆亚洲精品av| 午夜蜜桃一区二区三区| 早川濑里奈av黑人番号| 亚洲熟女综合色一区二区三区四区| 人妻少妇亚洲一区二区| 欧美日韩国产一区二区三区三州| 大陆av手机在线观看| av资源中文字幕在线观看| 91中文字幕最新合集| 熟女妇女老妇一二三区| 97成人免费在线观看网站| 护士特殊服务久久久久久久| 天天日天天操天天摸天天舔| 欧美男同性恋69视频| 91超碰青青中文字幕| 18禁无翼鸟成人在线| 免费观看国产综合视频| av视网站在线观看| 中文字幕一区的人妻欧美日韩| 精品亚洲中文字幕av| 亚洲一区二区三区偷拍女厕91| 女蜜桃臀紧身瑜伽裤| 美日韩在线视频免费看| 中国视频一区二区三区| 激情国产小视频在线| 日本av高清免费网站| 少妇人妻100系列| 国产综合高清在线观看| 日韩欧美一级aa大片| 一区二区三区四区视频| 熟女人妻在线中出观看完整版| 久久这里只有精彩视频免费| 国产一区二区火爆视频| 亚洲中文字幕乱码区| av完全免费在线观看av| 夫妻在线观看视频91| 国产视频网站一区二区三区| 日本脱亚入欧是指什么| av在线资源中文字幕| 3337p日本欧洲大胆色噜噜| 98视频精品在线观看| 亚洲国际青青操综合网站| 欧美黑人与人妻精品| 97精品人妻一区二区三区精品| 香港三日本三韩国三欧美三级| 亚洲国产40页第21页| 国产精品久久久久久久女人18| 青青青激情在线观看视频| 性欧美日本大妈母与子| 色婷婷精品大在线观看| 天天摸天天亲天天舔天天操天天爽 | 国产视频精品资源网站| 欧美香蕉人妻精品一区二区| 嫩草aⅴ一区二区三区| 亚洲熟妇久久无码精品| 91免费福利网91麻豆国产精品| jul—619中文字幕在线| 一区二区三区 自拍偷拍| 日本裸体熟妇区二区欧美| 亚洲蜜臀av一区二区三区九色| 国产成人小视频在线观看无遮挡| 国产真实灌醉下药美女av福利| 黄色片黄色片wyaa| 天堂av在线最新版在线| 中文字幕在线视频一区二区三区 | 十八禁在线观看地址免费| 精品suv一区二区69| 91人妻人人做人人爽在线| 少妇ww搡性bbb91| 婷婷综合蜜桃av在线| 国产综合视频在线看片| 青青青青青手机视频| 国产品国产三级国产普通话三级| 香港一级特黄大片在线播放| 97超碰国语国产97超碰| asmr福利视频在线观看| 黑人性生活视频免费看| 成人sm视频在线观看| 中文字幕在线视频一区二区三区| 亚洲av可乐操首页| 欧美黄片精彩在线免费观看| 亚洲av自拍天堂网| 亚洲国产欧美一区二区三区…| 在线视频自拍第三页| 成人国产影院在线观看| 又大又湿又爽又紧A视频| 五十路人妻熟女av一区二区| av无限看熟女人妻另类av| 国产不卡av在线免费| 88成人免费av网站| 91色网站免费在线观看| 午夜精品一区二区三区城中村| 亚洲天堂有码中文字幕视频| 91久久人澡人人添人人爽乱| 最新欧美一二三视频| 国产真实灌醉下药美女av福利| 国产成人精品午夜福利训2021| 午夜免费体验区在线观看| 97小视频人妻一区二区| 91精品国产综合久久久蜜| 色花堂在线av中文字幕九九| 日本欧美视频在线观看三区| 果冻传媒av一区二区三区| 欧美国产亚洲中英文字幕| 青娱乐蜜桃臀av色| 亚洲精品ww久久久久久| 成人精品视频99第一页| 午夜极品美女福利视频| 天天夜天天日天天日| 在线观看国产网站资源| 91成人精品亚洲国产| 大肉大捧一进一出好爽在线视频| 亚洲的电影一区二区三区| 亚洲嫩模一区二区三区| 亚洲人一区二区中文字幕| 三上悠亚和黑人665番号| 欧美在线偷拍视频免费看| 天天操天天干天天艹| 欧美在线偷拍视频免费看| 91免费观看国产免费| 女警官打开双腿沦为性奴| 久久久久久久久久久久久97| 国产乱弄免费视频观看| 亚洲熟女久久久36d| 夜夜骑夜夜操夜夜奸| 五月天中文字幕内射| 成人区人妻精品一区二视频| 日本午夜爽爽爽爽爽视频在线观看 | 好男人视频在线免费观看网站| 久草视频在线免播放| 亚洲 图片 欧美 图片| 欧美视频综合第一页| 免费看国产av网站| 免费看国产又粗又猛又爽又黄视频| 亚洲精品 欧美日韩| 黄网十四区丁香社区激情五月天| 99久久99一区二区三区| 久久久极品久久蜜桃| 午夜成午夜成年片在线观看| 91免费福利网91麻豆国产精品| 91精品国产高清自在线看香蕉网| 中文字幕日韩无敌亚洲精品| 免费十精品十国产网站| 天天日夜夜干天天操| 最新中文字幕免费视频| 久久久久只精品国产三级| 超碰97人人澡人人| 黄色在线观看免费观看在线| 91精品激情五月婷婷在线| 3344免费偷拍视频| 亚洲va国产va欧美va在线| 日本韩国在线观看一区二区| 青青青青青青青在线播放视频| 亚洲粉嫩av一区二区三区| 国产精品系列在线观看一区二区 | 日本熟妇一区二区x x| aiss午夜免费视频| 黄片色呦呦视频免费看| 人妻久久无码中文成人| 91色秘乱一区二区三区| avjpm亚洲伊人久久| 久久久精品国产亚洲AV一| 三上悠亚和黑人665番号| 天天操天天操天天碰| 97人妻总资源视频| 天天干天天日天天干天天操| 久久农村老妇乱69系列| 中文字幕在线第一页成人| 亚洲免费成人a v| 中文字幕一区二区亚洲一区| 亚洲精品无码色午夜福利理论片| 黄色录像鸡巴插进去| 瑟瑟视频在线观看免费视频| 精品成人啪啪18免费蜜臀| 日韩一个色综合导航| 欧美精品国产综合久久| 亚洲激情偷拍一区二区| 午夜免费观看精品视频| 伊人日日日草夜夜草| 亚洲另类图片蜜臀av| 日韩精品激情在线观看| 美女大bxxxx内射| av线天堂在线观看| 自拍偷拍一区二区三区图片| 99国内精品永久免费视频| 加勒比视频在线免费观看| 天天操天天干天天日狠狠插 | 亚洲av色图18p| 欧美一区二区三区啪啪同性| 国产成人精品久久二区91| 99国内小视频在现欢看| 欧美一区二区三区激情啪啪啪| 成人18禁网站在线播放| 日韩在线中文字幕色| 丁香花免费在线观看中文字幕| 久久久久五月天丁香社区| 欧美一区二区三区四区性视频| 亚洲国产免费av一区二区三区| 国产麻豆国语对白露脸剧情| 在线国产日韩欧美视频| 欧美精品欧美极品欧美视频| 婷婷六月天中文字幕| 狠狠鲁狠狠操天天晚上干干| 夜夜骑夜夜操夜夜奸| 毛茸茸的大外阴中国视频| yellow在线播放av啊啊啊| 精品久久久久久久久久久99| 日本高清成人一区二区三区| 青青青视频自偷自拍38碰| 成熟熟女国产精品一区| 直接能看的国产av| 五十路人妻熟女av一区二区| 午夜精品一区二区三区福利视频| japanese日本熟妇另类| 自拍偷拍日韩欧美一区二区| 国产在线观看免费人成短视频| 亚洲伊人久久精品影院一美女洗澡| 97精品综合久久在线| 亚洲国产精品黑丝美女| 国产精品久久久久久久久福交 | 中文 成人 在线 视频| 青春草视频在线免费播放| 精品国产成人亚洲午夜| 可以免费看的www视频你懂的| 38av一区二区三区| 国内自拍第一页在线观看| 97资源人妻免费在线视频| 久久久超爽一二三av| 亚洲欧美激情国产综合久久久| 亚洲 色图 偷拍 欧美| 天天操天天弄天天射| 欧美色呦呦最新网址| 中文字幕在线视频一区二区三区| 亚洲公开视频在线观看| 精品国产亚洲av一淫| 欧美交性又色又爽又黄麻豆| 青青青青视频在线播放| 欧美地区一二三专区| 天天操天天干天天艹| 黄色三级网站免费下载| av中文字幕网址在线| 亚洲欧美成人综合视频| 午夜久久香蕉电影网| 在线免费观看欧美小视频| 日日夜夜大香蕉伊人| 熟女人妻一区二区精品视频| 中文字幕乱码人妻电影| 亚洲图片偷拍自拍区| 亚洲天堂第一页中文字幕| 天天日夜夜操天天摸| 国产亚洲四十路五十路| 综合色区亚洲熟妇shxstz| 91高清成人在线视频| 天天日天天敢天天干| 在线观看欧美黄片一区二区三区 | 97超碰最新免费在线观看| 国产综合视频在线看片| 亚洲1卡2卡三卡4卡在线观看| 社区自拍揄拍尻屁你懂的| 经典国语激情内射视频| 又黄又刺激的午夜小视频| 久久人人做人人妻人人玩精品vr| 欧美久久久久久三级网| 青青尤物在线观看视频网站| 日韩北条麻妃一区在线| 天天日天天爽天天爽| 亚洲va国产va欧美精品88| 欧美日韩一区二区电影在线观看| 中文字幕日韩91人妻在线| 日韩中文字幕福利av| 99av国产精品欲麻豆| 韩国黄色一级二级三级| 超级福利视频在线观看| 国产男女视频在线播放| 午夜免费体验区在线观看| 91天堂天天日天天操| 人人妻人人澡欧美91精品| 成人国产激情自拍三区| 国产精品一区二区久久久av| 中文字幕人妻av在线观看| 天天躁日日躁狠狠躁躁欧美av | 中文字幕,亚洲人妻| 在线免费观看国产精品黄色| 一区二区视频视频视频| 中出中文字幕在线观看| 东京热男人的av天堂| okirakuhuhu在线观看| 中文字幕欧美日韩射射一| 国产九色91在线视频| 青青青国产免费视频| 亚洲人人妻一区二区三区| 亚洲乱码中文字幕在线| 特一级特级黄色网片| av天堂加勒比在线| 五月天久久激情视频| 久久久久久9999久久久久| 亚洲av黄色在线网站| 最新97国产在线视频| 精品国产在线手机在线| 日韩激情文学在线视频| 丝袜肉丝一区二区三区四区在线看| 国产午夜福利av导航| free性日本少妇| 亚洲 图片 欧美 图片| 自拍偷拍亚洲欧美在线视频| 中文字幕网站你懂的| 果冻传媒av一区二区三区| 91麻豆精品久久久久| 日本免费一级黄色录像| 国产精彩对白一区二区三区 | 沙月文乃人妻侵犯中文字幕在线| 夜夜嗨av蜜臀av| 青草亚洲视频在线观看| 日本又色又爽又黄又粗| 最新国产精品拍在线观看| 午夜福利人人妻人人澡人人爽| 欧美另类一区二区视频| 亚洲免费福利一区二区三区| 97人人妻人人澡人人爽人人精品| 亚洲激情,偷拍视频| 水蜜桃一区二区三区在线观看视频 | 老司机福利精品视频在线| 99精品一区二区三区的区| ka0ri在线视频| 久久久久久国产精品| 国产使劲操在线播放| 在线观看911精品国产| 在线观看免费视频色97| 国产成人一区二区三区电影网站 | 女人精品内射国产99| 日本午夜爽爽爽爽爽视频在线观看| 19一区二区三区在线播放| 成年人该看的视频黄免费| 超pen在线观看视频公开97| 中文字幕一区二区人妻电影冢本| 欧美另类重口味极品在线观看| 毛片一级完整版免费| 精品亚洲中文字幕av| 一区二区视频在线观看免费观看 | 日韩视频一区二区免费观看| 黄色大片男人操女人逼| 免费高清自慰一区二区三区网站 | 老司机午夜精品视频资源| 成人综合亚洲欧美一区| 亚洲一区制服丝袜美腿| 中文字幕AV在线免费看 | 亚洲熟色妇av日韩熟色妇在线| 久久久精品国产亚洲AV一| 欧美亚洲国产成人免费在线| 亚洲国产免费av一区二区三区 | 18禁免费av网站| 老师啊太大了啊啊啊尻视频| 精内国产乱码久久久久久| 久久精品久久精品亚洲人| 888亚洲欧美国产va在线播放| 国产又粗又猛又爽又黄的视频在线| 91综合久久亚洲综合| 亚洲 欧美 精品 激情 偷拍| 天天日天天操天天摸天天舔| 在线观看视频污一区| 天堂资源网av中文字幕| 高清成人av一区三区| 国产精品成久久久久三级蜜臀av| 一级A一级a爰片免费免会员| 日本少妇人妻xxxxxhd| 婷婷色中文亚洲网68| 亚国产成人精品久久久| 亚洲在线免费h观看网站| 在线国产中文字幕视频| 99国内小视频在现欢看| 性欧美激情久久久久久久| 免费在线播放a级片| 男大肉棒猛烈插女免费视频 | 久久久久久久亚洲午夜综合福利 | 福利片区一区二体验区| 久久久久久久久久久久久97| 免费无毒热热热热热热久| 中文字幕国产专区欧美激情| aⅴ精产国品一二三产品| 91传媒一区二区三区| 91chinese在线视频| 日本少妇人妻xxxxx18| 国产精彩对白一区二区三区| 欧美日韩精品永久免费网址| 国产又粗又猛又爽又黄的视频美国| 日本熟女50视频免费| 色av色婷婷人妻久久久精品高清| 在线免费观看国产精品黄色| 欧美一区二区三区激情啪啪啪| 国产熟妇乱妇熟色T区| 天天操天天干天天日狠狠插| 熟女人妻一区二区精品视频| 日本熟女精品一区二区三区| 蝴蝶伊人久久中文娱乐网| 自拍偷区二区三区麻豆| 亚洲国产成人在线一区| 亚洲国产免费av一区二区三区 | 亚洲av男人天堂久久| eeuss鲁片一区二区三区| 精品久久婷婷免费视频| 操日韩美女视频在线免费看| 国产福利小视频免费观看| 视频 一区二区在线观看| 韩国一级特黄大片做受| 国产欧美精品一区二区高清 | 天天插天天狠天天操| 精品av久久久久久久| 国产精品伦理片一区二区| 亚洲第一伊人天堂网| 孕妇奶水仑乱A级毛片免费看| 91国产在线免费播放| 亚洲第17页国产精品| 在线免费观看日本片| 韩国爱爱视频中文字幕| 少妇高潮无套内谢麻豆| 日韩欧美国产一区ab| 老有所依在线观看完整版| 男女啪啪啪啪啪的网站| 一区二区三区四区中文| 可以免费看的www视频你懂的| 特级无码毛片免费视频播放| 国产又粗又猛又爽又黄的视频在线| av在线免费资源站| japanese日本熟妇另类| 久久久久久9999久久久久| 久久久久久国产精品| 40道精品招牌菜特色| 男人的天堂在线黄色| 伊人成人综合开心网| 三级等保密码要求条款| 女同久久精品秋霞网| 在线国产中文字幕视频| 亚洲欧美色一区二区| 色偷偷伊人大杳蕉综合网| 久久久久久久久久久免费女人| 欧美viboss性丰满| 东游记中文字幕版哪里可以看到| 38av一区二区三区| 国产精品久久久久久美女校花| 国产精品欧美日韩区二区| 国产日本精品久久久久久久| 少妇人妻100系列| 521精品视频在线观看| 青青社区2国产视频| 日日操综合成人av| 欧美中文字幕一区最新网址| 亚洲男人在线天堂网| 久久精品美女免费视频| 色在线观看视频免费的| 五月天色婷婷在线观看视频免费| 中国把吊插入阴蒂的视频| 日韩人妻xxxxx| 青娱乐最新视频在线| 在线观看免费岛国av| 超pen在线观看视频公开97| 在线国产日韩欧美视频| 五十路熟女人妻一区二区9933| 久草视频中文字幕在线观看| 中文字幕免费福利视频6| 大骚逼91抽插出水视频| sw137 中文字幕 在线| 在线免费观看国产精品黄色| 伊拉克及约旦宣布关闭领空| 亚洲中文字字幕乱码| 夜夜骑夜夜操夜夜奸| 极品丝袜一区二区三区| 扒开腿挺进肉嫩小18禁视频| 亚洲免费成人a v| 夫妻在线观看视频91| 成人sm视频在线观看| 天天摸天天日天天操| 3337p日本欧洲大胆色噜噜| 久久久久五月天丁香社区| 成熟丰满熟妇高潮xx×xx| 欧美特级特黄a大片免费| 日日夜夜狠狠干视频| 午夜久久久久久久99| 日本裸体熟妇区二区欧美| 国产精品一区二区久久久av| 人妻在线精品录音叫床| 欧美一区二区中文字幕电影| 日韩伦理短片在线观看| 亚洲av极品精品在线观看| 国产乱弄免费视频观看| 久久热久久视频在线观看| 国产+亚洲+欧美+另类| 四川乱子伦视频国产vip| 少妇深喉口爆吞精韩国| 国产精品成久久久久三级蜜臀av| 天天日天天干天天爱| 伊人情人综合成人久久网小说| 中文字幕AV在线免费看 | 五月天色婷婷在线观看视频免费| 55夜色66夜色国产精品站| 免费观看丰满少妇做受| 青青青爽视频在线播放| 亚洲免费视频欧洲免费视频| 久久久久久久亚洲午夜综合福利| 清纯美女在线观看国产| 亚洲在线一区二区欧美| 亚洲 欧美 自拍 偷拍 在线| 日韩精品电影亚洲一区| 天天射,天天操,天天说| 日本一二三中文字幕| 2022国产综合在线干| 国产精品视频资源在线播放| 国产变态另类在线观看| 蜜桃久久久久久久人妻| 在线观看免费视频色97| 久青青草视频手机在线免费观看 | 丝袜长腿第一页在线| 日韩av有码中文字幕| 午夜精品一区二区三区城中村| jiuse91九色视频| 婷婷午夜国产精品久久久| 久久久久久97三级| 欧洲欧美日韩国产在线| 日韩精品啪啪视频一道免费| 伊人网中文字幕在线视频| 硬鸡巴动态操女人逼视频| 天天干夜夜操啊啊啊| 福利午夜视频在线合集| 欧美另类重口味极品在线观看| wwwxxx一级黄色片| 摧残蹂躏av一二三区| 日本av高清免费网站| 国产男女视频在线播放| 美女在线观看日本亚洲一区| 午夜极品美女福利视频| 色吉吉影音天天干天天操| 人人在线视频一区二区| 美女在线观看日本亚洲一区| 亚洲精品色在线观看视频| 成年人啪啪视频在线观看| 亚洲 国产 成人 在线| 最新欧美一二三视频| 伊人网中文字幕在线视频| 亚洲一区二区三区偷拍女厕91 | 日本少妇人妻xxxxxhd| 欧美日韩激情啪啪啪| 香蕉片在线观看av| 日曰摸日日碰夜夜爽歪歪| 日本少妇人妻xxxxx18| 91极品新人『兔兔』精品新作| 97超碰国语国产97超碰| 精品日产卡一卡二卡国色天香| 在线观看的a站 最新| 日韩人妻丝袜中文字幕| 社区自拍揄拍尻屁你懂的| 日本高清在线不卡一区二区 | 瑟瑟视频在线观看免费视频| 久碰精品少妇中文字幕av| 男女第一次视频在线观看| 99久久99一区二区三区| 涩爱综合久久五月蜜臀| 国产一区二区火爆视频| 亚洲第17页国产精品| 91久久国产成人免费网站| 在线观看免费视频色97| 欧美 亚洲 另类综合| 亚洲另类综合一区小说| 久久精品亚洲成在人线a| 伊人综合免费在线视频| 最近的中文字幕在线mv视频| 中文字幕网站你懂的| av完全免费在线观看av| 性感美女诱惑福利视频| 最新国产亚洲精品中文在线| 欧美天堂av无线av欧美| 5528327男人天堂| 国产剧情演绎系列丝袜高跟| 又色又爽又黄又刺激av网站| 天天色天天操天天舔| 国产片免费观看在线观看| 2018在线福利视频| 91久久综合男人天堂| 大黑人性xxxxbbbb| 日本五十路熟新垣里子| 精品视频中文字幕在线播放| 国产女人叫床高潮大片视频| 亚洲精品亚洲人成在线导航| 一区二区熟女人妻视频| 漂亮 人妻被中出中文| 中国无遮挡白丝袜二区精品| 日韩欧美亚洲熟女人妻| 哥哥姐姐综合激情小说| 一级黄片久久久久久久久| 亚洲人一区二区中文字幕| 热久久只有这里有精品| 天天插天天狠天天操| 久久这里只有精彩视频免费| 51国产成人精品视频| 最新91九色国产在线观看| 美女少妇亚洲精选av| 国产一级麻豆精品免费| 视频在线免费观看你懂得| 日韩av熟妇在线观看| 久青青草视频手机在线免费观看| 含骚鸡巴玩逼逼视频| 2020中文字幕在线播放| 亚洲午夜伦理视频在线| 人妻激情图片视频小说| 久久久久久97三级| 十八禁在线观看地址免费| 日本啪啪啪啪啪啪啪| 中文字幕在线第一页成人| av在线shipin| 玩弄人妻熟妇性色av少妇| 青青青青视频在线播放| 亚洲伊人av天堂有码在线| 韩国男女黄色在线观看| 成年人啪啪视频在线观看| 91久久国产成人免费网站| 一区二区三区在线视频福利| 亚洲成人av一区久久| 超碰中文字幕免费观看| 青青青青草手机在线视频免费看| 中文字幕在线永久免费播放| 天天干天天操天天玩天天射| 欧洲黄页网免费观看| 最近的中文字幕在线mv视频| 亚洲av无硬久久精品蜜桃| 天天射夜夜操狠狠干| 亚洲成人熟妇一区二区三区| 偷拍自拍视频图片免费| 欧美久久久久久三级网| 亚洲激情偷拍一区二区| 欧美视频不卡一区四区| 沙月文乃人妻侵犯中文字幕在线| 亚洲狠狠婷婷综合久久app| 亚洲欧美清纯唯美另类| 99精品国产免费久久| 91自产国产精品视频| 日本一本午夜在线播放| 亚洲精品av在线观看| 国产视频网站国产视频| 日韩剧情片电影在线收看| 熟女人妻一区二区精品视频| 国产九色91在线视频| gav成人免费播放| 欧美精产国品一二三产品区别大吗| 北条麻妃肉色丝袜视频| 国产97视频在线精品| 亚洲欧美人精品高清| 亚洲精品午夜久久久久| 中文字母永久播放1区2区3区| 粗大的内捧猛烈进出爽大牛汉子| 婷婷激情四射在线观看视频| 亚洲护士一区二区三区| 性感美女诱惑福利视频| 任你操视频免费在线观看| 最近的中文字幕在线mv视频| 不卡一不卡二不卡三| 东京热男人的av天堂| 三级等保密码要求条款| 国产aⅴ一线在线观看| 可以免费看的www视频你懂的| 亚洲嫩模一区二区三区| 98视频精品在线观看| 美女在线观看日本亚洲一区| 亚洲免费在线视频网站| 国产第一美女一区二区三区四区| 国产第一美女一区二区三区四区 | 巨乳人妻日下部加奈被邻居中出 | 国产高清女主播在线| 一级a看免费观看网站| 老鸭窝在线观看一区| 青青青青草手机在线视频免费看| 2021天天色天天干| av老司机精品在线观看| 精品首页在线观看视频| 福利在线视频网址导航| 亚洲免费va在线播放| 超级福利视频在线观看| 天天草天天色天天干| 制服丝袜在线人妻中文字幕| 日韩熟女av天堂系列| 久久这里有免费精品| 黄色成人在线中文字幕| 涩爱综合久久五月蜜臀| 午夜在线观看岛国av,com| 亚洲第一黄色在线观看| 国产成人自拍视频播放| 欧美精品黑人性xxxx| 日韩北条麻妃一区在线| 精品一区二区三区在线观看| 91九色国产熟女一区二区| 亚洲综合另类精品小说| 在线观看911精品国产| 18禁精品网站久久| 日本熟妇一区二区x x| 国产麻豆91在线视频| 78色精品一区二区三区| 97超碰国语国产97超碰| 亚洲欧美日韩视频免费观看| 免费十精品十国产网站| 久久尻中国美女视频| 黄色三级网站免费下载| 视频 国产 精品 熟女 | 在线免费观看99视频| 夜夜躁狠狠躁日日躁麻豆内射 | 欧亚日韩一区二区三区观看视频 | 国产自拍在线观看成人| 自拍偷拍,中文字幕| 99精品久久久久久久91蜜桃| 色花堂在线av中文字幕九九| 在线观看视频网站麻豆| 夜夜嗨av蜜臀av| 日韩精品啪啪视频一道免费| 中字幕人妻熟女人妻a62v网| 亚洲天堂精品福利成人av| 成人影片高清在线观看| 国产日韩av一区二区在线| 免费看国产又粗又猛又爽又黄视频| 午夜久久香蕉电影网| 欧美亚洲免费视频观看| 99精品免费久久久久久久久a| 国内精品在线播放第一页| 日韩加勒比东京热二区| 新婚人妻聚会被中出| 精品国产午夜视频一区二区| 中文字幕成人日韩欧美| 日视频免费在线观看| 青春草视频在线免费播放| 国产亚洲国产av网站在线| 欧亚乱色一区二区三区| 激情啪啪啪啪一区二区三区| 又粗又长 明星操逼小视频| 黄片色呦呦视频免费看| 亚洲青青操骚货在线视频| 黑人变态深video特大巨大| 国产第一美女一区二区三区四区| 国产午夜无码福利在线看| av在线资源中文字幕| 欧美精品一二三视频| 老司机午夜精品视频资源| 揄拍成人国产精品免费看视频| 青青青青青操视频在线观看| 国产女孩喷水在线观看| 欧美精品国产综合久久| 成人av在线资源网站| 在线观看911精品国产| 精品一区二区三区三区色爱| 亚洲免费国产在线日韩| 热思思国产99re| 国产真实灌醉下药美女av福利| 欧美成人综合视频一区二区| 好男人视频在线免费观看网站| 精品美女福利在线观看| 91片黄在线观看喷潮| 亚洲一区二区三区uij| 一区二区三区av高清免费| 成人国产影院在线观看| 福利在线视频网址导航| 人妻无码色噜噜狠狠狠狠色| 视频一区 二区 三区 综合| 亚洲精品一线二线在线观看| 不戴胸罩引我诱的隔壁的人妻| 国产精品探花熟女在线观看| 视频一区 视频二区 视频| 中国产一级黄片免费视频播放| 日本在线不卡免费视频| 在线免费观看靠比视频的网站| 亚洲午夜福利中文乱码字幕| xxx日本hd高清| 欧美成人综合视频一区二区| 日本精品美女在线观看| 亚洲青青操骚货在线视频| 亚洲一区二区三区在线高清| 日韩三级电影华丽的外出| 亚洲福利午夜久久久精品电影网 | 九色porny九色9l自拍视频| 久久免看30视频口爆视频| 日本av高清免费网站| 日韩a级精品一区二区| 97色视频在线观看| 超级av免费观看一区二区三区| 男人和女人激情视频| 含骚鸡巴玩逼逼视频| 国产又大又黄免费观看| 免费无码人妻日韩精品一区二区 | 高清一区二区欧美系列| 亚洲 自拍 色综合图| 久草电影免费在线观看| 91破解版永久免费| 少妇深喉口爆吞精韩国| 国产亚洲成人免费在线观看 | 91精品国产高清自在线看香蕉网 | 国产夫妻视频在线观看免费| 中文字幕一区二区亚洲一区| 熟女在线视频一区二区三区| 极品丝袜一区二区三区| 国产麻豆91在线视频| 色呦呦视频在线观看视频| 中文字幕在线观看极品视频| 在线网站你懂得老司机| 91国产资源在线视频| 馒头大胆亚洲一区二区| 亚洲欧美另类手机在线| 熟女少妇激情五十路| 欧美精品 日韩国产| 国产精品自拍视频大全| 大香蕉大香蕉在线看| 久草电影免费在线观看| 欧美综合婷婷欧美综合| 在线免费观看靠比视频的网站| 国产综合高清在线观看| 亚洲国产欧美国产综合在线| 狠狠操狠狠操免费视频| 日韩成人免费电影二区| 91综合久久亚洲综合| 国产激情av网站在线观看| 色天天天天射天天舔| 一区二区三区欧美日韩高清播放| free性日本少妇| www日韩毛片av| 黄色片一级美女黄色片| 国产精品自拍在线视频| aiss午夜免费视频| 午夜极品美女福利视频| 日韩不卡中文在线视频网站| 91免费福利网91麻豆国产精品| 欧美偷拍亚洲一区二区| aⅴ精产国品一二三产品| 亚洲视频乱码在线观看| 特大黑人巨大xxxx| 成年人啪啪视频在线观看| 九九视频在线精品播放| 蜜桃久久久久久久人妻| 黄色无码鸡吧操逼视频| 成年午夜免费无码区| 免费无毒热热热热热热久| 成人30分钟免费视频| yellow在线播放av啊啊啊| 蜜桃专区一区二区在线观看| 中文字幕AV在线免费看 | 老司机你懂得福利视频| 国产女人被做到高潮免费视频| 一色桃子久久精品亚洲 | av森泽佳奈在线观看| 91精品国产91久久自产久强| 天堂女人av一区二区| 在线新三级黄伊人网| 国产麻豆国语对白露脸剧情| 国产实拍勾搭女技师av在线| 日韩欧美亚洲熟女人妻| 操人妻嗷嗷叫视频一区二区| 少妇高潮一区二区三区| 97香蕉碰碰人妻国产樱花| 人妻素人精油按摩中出| 国产午夜福利av导航| 久草视频在线一区二区三区资源站| 中文字幕 码 在线视频| 手机看片福利盒子日韩在线播放 | 久久丁香花五月天色婷婷| 国产超码片内射在线| 国产精品久久综合久久| 国产 在线 免费 精品| www,久久久,com| 国产伦精品一区二区三区竹菊| av在线免费中文字幕| 亚洲中文字幕综合小综合| 中文字幕在线观看国产片| 五十路熟女人妻一区二| 国产揄拍高清国内精品对白| 天堂av在线官网中文| 日韩欧美中文国产在线| 国产精品视频资源在线播放| 色哟哟国产精品入口| ka0ri在线视频| 三上悠亚和黑人665番号| 91色秘乱一区二区三区| 这里只有精品双飞在线播放| 黑人变态深video特大巨大| 精彩视频99免费在线| 亚洲熟女综合色一区二区三区四区| 人妻丝袜诱惑我操她视频| 红杏久久av人妻一区| 国际av大片在线免费观看| 97色视频在线观看| 中文字幕综合一区二区| 在线观看视频 你懂的| 蜜桃视频入口久久久| 天天干天天操天天玩天天射| 伊人成人在线综合网| 亚洲综合在线观看免费| 伊人精品福利综合导航| 亚洲熟妇x久久av久久| 99久久中文字幕一本人| 端庄人妻堕落挣扎沉沦| 欧美日韩国产一区二区三区三州| 一区二区久久成人网| 深夜男人福利在线观看| 999久久久久999| 欧美va亚洲va天堂va| 精品国产亚洲av一淫| 欧美中文字幕一区最新网址| 青青青国产免费视频| 熟女人妻在线中出观看完整版| 精品91高清在线观看| 欧美精品资源在线观看| 美女小视频网站在线| 免费成人va在线观看| 国产剧情演绎系列丝袜高跟| 天堂中文字幕翔田av | 无码日韩人妻精品久久| 亚洲成av人无码不卡影片一| 亚洲欧美综合另类13p| 亚洲高清自偷揄拍自拍| 日本www中文字幕| 日视频免费在线观看| 亚洲一区制服丝袜美腿| 极品性荡少妇一区二区色欲| 日韩欧美在线观看不卡一区二区 | 青草青永久在线视频18| 亚洲午夜在线视频福利| 日韩成人综艺在线播放| 亚洲国产免费av一区二区三区 | 国产亚洲成人免费在线观看| 欧美精产国品一二三产品区别大吗| 嫩草aⅴ一区二区三区| 男人在床上插女人视频| 青春草视频在线免费播放| 视频一区二区综合精品| 日韩精品激情在线观看| 日韩亚洲高清在线观看| 亚洲美女高潮喷浆视频| 成人国产影院在线观看| 欧洲亚洲欧美日韩综合| 中文字幕网站你懂的| 国产精品午夜国产小视频| 欧美第一页在线免费观看视频| 偷拍美女一区二区三区| 人人人妻人人澡人人| 国产污污污污网站在线| 3D动漫精品啪啪一区二区下载| 欲满人妻中文字幕在线| 中文字幕 码 在线视频| 日本少妇精品免费视频| 在线视频自拍第三页| 亚洲欧美成人综合视频| 日本精品视频不卡一二三| 狠狠地躁夜夜躁日日躁| 少妇人妻真实精品视频| 国产chinesehd精品麻豆| 欲满人妻中文字幕在线| 欧美精品黑人性xxxx| 国产揄拍高清国内精品对白| 日韩av有码一区二区三区4| 亚洲蜜臀av一区二区三区九色| 亚洲在线免费h观看网站| 免费黄高清无码国产| 老司机福利精品视频在线| 成人国产激情自拍三区| 日本后入视频在线观看| yy6080国产在线视频| 91国产在线视频免费观看| 欲乱人妻少妇在线视频裸| 国产视频网站一区二区三区 | 操人妻嗷嗷叫视频一区二区| 都市家庭人妻激情自拍视频| 喷水视频在线观看这里只有精品| 92福利视频午夜1000看 | 大香蕉大香蕉在线看| 粉嫩av蜜乳av蜜臀| av俺也去在线播放| 久久久久久国产精品| 91免费黄片可看视频| 欧美成人综合视频一区二区| 亚洲女人的天堂av| 好了av中文字幕在线| 亚洲av午夜免费观看| 99久久成人日韩欧美精品| 在线不卡成人黄色精品| 亚洲成人激情视频免费观看了| 99精品视频在线观看婷婷| 11久久久久久久久久久| 国产综合精品久久久久蜜臀| 在线观看911精品国产| 韩国男女黄色在线观看| 任我爽精品视频在线播放| 国产亚洲四十路五十路| 一级A一级a爰片免费免会员| 色花堂在线av中文字幕九九| 传媒在线播放国产精品一区| 93人妻人人揉人人澡人人| 天天想要天天操天天干| 日本黄色三级高清视频| 北条麻妃高跟丝袜啪啪| 19一区二区三区在线播放| 精品av久久久久久久| 亚洲老熟妇日本老妇| 亚洲成人黄色一区二区三区 | 人人人妻人人澡人人| 国产精品人妻66p| av视网站在线观看| 欧美黄片精彩在线免费观看| 午夜精品一区二区三区4| 天天干天天操天天插天天日| 国产精彩对白一区二区三区| 97年大学生大白天操逼| 亚洲视频在线视频看视频在线| 91亚洲精品干熟女蜜桃频道| 一级A一级a爰片免费免会员| 亚洲男人的天堂a在线| 全国亚洲男人的天堂|