国产无遮挡裸体免费直播视频,久久精品国产蜜臀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| 丝袜肉丝一区二区三区四区在线| 欧美 亚洲 另类综合| 又黄又刺激的午夜小视频| 一级A一级a爰片免费免会员| 久草视频福利在线首页| 青青青爽视频在线播放| 国产午夜激情福利小视频在线| 亚洲成人国产av在线| 同居了嫂子在线播高清中文| 夜夜嗨av一区二区三区中文字幕| 综合国产成人在线观看| av日韩在线观看大全| 中文字幕日韩91人妻在线| 亚洲免费av在线视频| 免费看国产av网站| 日韩欧美高清免费在线| 人妻丝袜精品中文字幕| 动漫av网站18禁| 国产熟妇人妻ⅹxxxx麻豆| 亚洲高清国产拍青青草原| 日本女人一级免费片| 狠狠操操操操操操操操操| 日韩伦理短片在线观看| 操的小逼流水的文章| 亚洲男人的天堂a在线| 欧美老妇精品另类不卡片| 黄片大全在线观看观看| 熟女人妻在线中出观看完整版| 丝袜美腿视频诱惑亚洲无| 日本熟妇丰满厨房55| 91人妻精品久久久久久久网站| 国产不卡av在线免费| 久久精品久久精品亚洲人| 国产男女视频在线播放| 在线免费观看av日韩| japanese五十路熟女熟妇| 国内精品在线播放第一页| 天天色天天操天天舔| 大鸡吧插逼逼视频免费看| 亚洲图库另类图片区| 日韩美av高清在线| 在线制服丝袜中文字幕| 久久美欧人妻少妇一区二区三区| 国产成人一区二区三区电影网站| 国产精品久久综合久久| 在线 中文字幕 一区| 天天日天天做天天日天天做| 成人av免费不卡在线观看| 成人国产小视频在线观看| 大尺度激情四射网站| 少妇深喉口爆吞精韩国| 国产在线观看黄色视频| 亚洲无码一区在线影院| 青青色国产视频在线| 免费手机黄页网址大全| 日韩欧美国产精品91| 欧美激情电影免费在线| 国产a级毛久久久久精品| 国产av自拍偷拍盛宴| 中文字幕+中文字幕| 啊啊啊想要被插进去视频| 亚洲成人精品女人久久久| 亚洲天堂精品久久久| 天天日天天摸天天爱| 日本熟女50视频免费| 黄色资源视频网站日韩| 黄色资源视频网站日韩| 天天操夜夜操天天操天天操| 偷偷玩弄新婚人妻h视频| 97人人模人人爽人人喊| 中文字幕成人日韩欧美| 少妇ww搡性bbb91| 亚洲av日韩av第一区二区三区| 在线观看av2025| 中文字幕在线一区精品| 中文亚洲欧美日韩无线码| 夜夜骑夜夜操夜夜奸| 国产V亚洲V天堂无码欠欠| 天天日天天干天天舔天天射| 1区2区3区不卡视频| 99热99这里精品6国产| 成人动漫大肉棒插进去视频| 国产一区二区久久久裸臀| mm131美女午夜爽爽爽| 五十路息与子猛烈交尾视频| 日本人妻精品久久久久久| 在线观看黄色成年人网站| 女同久久精品秋霞网| 888亚洲欧美国产va在线播放| 亚洲成人熟妇一区二区三区 | 东游记中文字幕版哪里可以看到| 黑人巨大精品欧美视频| 亚洲国产欧美国产综合在线 | 传媒在线播放国产精品一区| 熟女妇女老妇一二三区| 一区二区三区另类在线| 激情人妻校园春色亚洲欧美| 99精品久久久久久久91蜜桃| 十八禁在线观看地址免费| 天天摸天天日天天操| 一区二区三区久久久91| 亚洲丝袜老师诱惑在线观看| 国产超码片内射在线| 人人超碰国字幕观看97| 99一区二区在线观看| 婷婷色中文亚洲网68| 宅男噜噜噜666国产| 欧美日韩一区二区电影在线观看| 亚洲另类综合一区小说| 丁香花免费在线观看中文字幕| 欧美精品免费aaaaaa| 91久久精品色伊人6882| 免费国产性生活视频| 国产精品视频资源在线播放| 自拍偷拍 国产资源| 后入美女人妻高清在线| 天天做天天干天天操天天射| 2025年人妻中文字幕乱码在线| 99视频精品全部15| 大肉大捧一进一出好爽在线视频| 青青青青青青青青青青草青青| 日本黄在免费看视频| 91国产在线视频免费观看| 成人av免费不卡在线观看| 亚洲欧美激情国产综合久久久| 东京干手机福利视频| 啪啪啪操人视频在线播放| 伊人日日日草夜夜草| 在线可以看的视频你懂的| 超碰在线观看免费在线观看| 天堂女人av一区二区| 欧美viboss性丰满| 蜜臀av久久久久蜜臀av麻豆| 5528327男人天堂| 色综合天天综合网国产成人| 精彩视频99免费在线| 久久丁香婷婷六月天| 人妻少妇精品久久久久久| 大肉大捧一进一出好爽在线视频 | 国产精品精品精品999| 欧美成人黄片一区二区三区| yy6080国产在线视频| 真实国模和老外性视频| 国产日本欧美亚洲精品视| 亚洲精品色在线观看视频| 激情色图一区二区三区| 中国视频一区二区三区| 五十路熟女人妻一区二区9933| 欧美中国日韩久久精品| 中文字幕+中文字幕| 三级av中文字幕在线观看| 少妇人妻100系列| 99热这里只有国产精品6| 1769国产精品视频免费观看| 久久久人妻一区二区| 国产一级麻豆精品免费| 欧美精品一二三视频| 亚洲激情偷拍一区二区| 亚洲1卡2卡三卡4卡在线观看| 国产精品手机在线看片| 中文字日产幕乱六区蜜桃| 久久久久久久久久性潮| 2022天天干天天操| 国产精品免费不卡av| 欧美成人一二三在线网| 一区二区麻豆传媒黄片| 操人妻嗷嗷叫视频一区二区| 日本熟妇一区二区x x| 熟女人妻一区二区精品视频| 日本高清撒尿pissing| 国产九色91在线视频| 中文字幕网站你懂的| 蜜臀av久久久久蜜臀av麻豆| 中文字幕av熟女人妻| 亚洲欧美综合另类13p| 人妻最新视频在线免费观看| 在线免费观看视频一二区| 日韩人妻丝袜中文字幕| 精品欧美一区二区vr在线观看| 天天干天天搞天天摸| 国产在线观看黄色视频| 美女张开两腿让男人桶av| 加勒比视频在线免费观看| 性欧美激情久久久久久久| 适合午夜一个人看的视频| 国产精品欧美日韩区二区| 国产精品一区二区久久久av| 任你操任你干精品在线视频| 大香蕉福利在线观看| 欧美精产国品一二三产品价格| 日本韩国亚洲综合日韩欧美国产| 57pao国产一区二区| 91亚洲精品干熟女蜜桃频道| 美日韩在线视频免费看| 亚洲综合色在线免费观看| 国产精品久久久久久久久福交| 伊人成人在线综合网| 91社福利《在线观看| 亚洲一区二区久久久人妻| 亚洲 欧美 自拍 偷拍 在线| 青青青视频手机在线观看| 亚洲精品久久综合久| 久久久久久97三级| 天天艹天天干天天操| 日韩中文字幕在线播放第二页 | 亚洲精品国产综合久久久久久久久| 精品成人午夜免费看| 亚洲最大免费在线观看| 精品视频国产在线观看| av一本二本在线观看| 超级福利视频在线观看| 蜜桃专区一区二区在线观看| 日本脱亚入欧是指什么| 天天日天天干天天插舔舔| 国产精品三级三级三级| 福利在线视频网址导航| 大学生A级毛片免费视频| 天天摸天天日天天操| 香蕉91一区二区三区| 91九色国产熟女一区二区| 美女 午夜 在线视频| 日韩av大胆在线观看| 国产精品自拍视频大全| 亚洲粉嫩av一区二区三区| 精品美女在线观看视频在线观看| 极品粉嫩小泬白浆20p主播| 中文字幕 亚洲av| 亚洲午夜在线视频福利| 成人精品视频99第一页| 日韩少妇人妻精品无码专区| 91免费放福利在线观看| 91久久国产成人免费网站| 狠狠鲁狠狠操天天晚上干干| 亚洲精品色在线观看视频| av中文字幕在线观看第三页| 特级欧美插插插插插bbbbb| 亚洲午夜电影在线观看| 色综合色综合色综合色| 特一级特级黄色网片| 国产熟妇一区二区三区av| 另类av十亚洲av| 久碰精品少妇中文字幕av| 亚洲一区二区三区av网站| 黄色在线观看免费观看在线| 91人妻精品久久久久久久网站| 制服丝袜在线人妻中文字幕| 国产精品自拍偷拍a| 国产一级麻豆精品免费| 欧美中文字幕一区最新网址| 人妻爱爱 中文字幕| 亚洲1069综合男同| 成人资源在线观看免费官网| 午夜在线精品偷拍一区二| 青青青青爽手机在线| 亚洲熟妇无码一区二区三区| 久久久久久久久久久免费女人| 五十路熟女人妻一区二区9933| 五十路人妻熟女av一区二区| 国产不卡av在线免费| 大鸡巴插入美女黑黑的阴毛| 在线观看欧美黄片一区二区三区| caoporm超碰国产| 在线播放 日韩 av| 成人av久久精品一区二区| 人妻爱爱 中文字幕| 国产日本精品久久久久久久| 亚洲国产在人线放午夜| 热思思国产99re| 大胸性感美女羞爽操逼毛片| 93精品视频在线观看| 国产无遮挡裸体免费直播视频| 66久久久久久久久久久| 欧美成人猛片aaaaaaa| 国产污污污污网站在线| 夜女神免费福利视频| 亚洲蜜臀av一区二区三区九色 | 国产中文字幕四区在线观看| 视频一区 二区 三区 综合| 亚洲狠狠婷婷综合久久app| 老司机午夜精品视频资源| 视频二区在线视频观看| 亚洲av日韩精品久久久| 直接能看的国产av| 97少妇精品在线观看| 一区二区三区激情在线| 91免费黄片可看视频| 97欧洲一区二区精品免费| 国产在线观看黄色视频| 99久久久无码国产精品性出奶水| 免费费一级特黄真人片| 66久久久久久久久久久| 欧美一区二区三区高清不卡tv| 亚洲无码一区在线影院| 色97视频在线播放| 大黑人性xxxxbbbb| 在线观看免费岛国av| 国产成人综合一区2区| 亚洲av无女神免非久久| 成人网18免费视频版国产| 亚洲国产精品美女在线观看| 91精品国产观看免费| 免费大片在线观看视频网站| 亚洲视频在线观看高清| 操日韩美女视频在线免费看 | 动漫美女的小穴视频| 91精品激情五月婷婷在线| 大香蕉玖玖一区2区| 欧美一区二区三区在线资源| 男人插女人视频网站| 亚洲精品无码久久久久不卡| av在线观看网址av| 888欧美视频在线| 人妻少妇av在线观看| 一区二区免费高清黄色视频| 丁香花免费在线观看中文字幕| rct470中文字幕在线| 国语对白xxxx乱大交| 人妻凌辱欧美丰满熟妇| 黄色成年网站午夜在线观看| 国产日本欧美亚洲精品视| 日韩成人综艺在线播放| 美女张开腿让男生操在线看| 老司机免费视频网站在线看| 亚洲一级美女啪啪啪| 早川濑里奈av黑人番号| 亚洲另类在线免费观看| 成人网18免费视频版国产| 日韩精品啪啪视频一道免费| 91超碰青青中文字幕| 精品亚洲中文字幕av| huangse网站在线观看| 99久久中文字幕一本人| 五色婷婷综合狠狠爱| 亚洲自拍偷拍精品网| 黄色录像鸡巴插进去| 绝顶痉挛大潮喷高潮无码| 精品久久久久久久久久久99| 香蕉91一区二区三区| 91久久精品色伊人6882| 一区二区三区日韩久久| 日韩av大胆在线观看| 国产精品久久久久久久精品视频| 成人午夜电影在线观看 久久| 成年女人免费播放视频| 女同性ⅹxx女同hd| 自拍偷拍,中文字幕| 欧美国产亚洲中英文字幕| 特级欧美插插插插插bbbbb| 国产精品视频资源在线播放 | 91福利在线视频免费观看| 1024久久国产精品| 国产精品视频一区在线播放| 骚逼被大屌狂草视频免费看| 激情小视频国产在线| 直接能看的国产av| 2020国产在线不卡视频| 欧美怡红院视频在线观看| 亚洲熟女女同志女同| 任你操任你干精品在线视频| 超碰在线观看免费在线观看| 在线观看视频网站麻豆| 日韩三级电影华丽的外出| 999九九久久久精品| 亚洲福利天堂久久久久久| free性日本少妇| 五月激情婷婷久久综合网| 五月天久久激情视频| 亚洲麻豆一区二区三区| 偷青青国产精品青青在线观看| 天天日天天舔天天射进去| 亚洲熟女综合色一区二区三区四区| 亚洲精品高清自拍av| 久久久噜噜噜久久熟女av| 日本黄色三级高清视频| 国产黄色a级三级三级三级| 久久香蕉国产免费天天| 在线不卡日韩视频播放| 午夜免费体验区在线观看| 成年午夜影片国产片| 2017亚洲男人天堂| 日韩中文字幕福利av| 中文乱理伦片在线观看| 老司机免费视频网站在线看| 91久久综合男人天堂| 老司机福利精品免费视频一区二区| 精品一区二区三四区| 我想看操逼黄色大片| 国产成人无码精品久久久电影| 九色视频在线观看免费| 2022中文字幕在线| 国产视频网站一区二区三区| 亚洲成人av一区在线| 中文字幕高清在线免费播放| 精品人妻伦一二三区久| 日本性感美女写真视频| 国产真实乱子伦a视频| 91成人在线观看免费视频| 人妻丰满熟妇综合网| 美女在线观看日本亚洲一区| 99热久久极品热亚洲| 大学生A级毛片免费视频| 婷婷色中文亚洲网68| 伊人精品福利综合导航| 亚洲成人国产综合一区| 欧美特色aaa大片| 国产熟妇人妻ⅹxxxx麻豆| avjpm亚洲伊人久久| 国产美女午夜福利久久| 国产1区,2区,3区| 天天日天天干天天舔天天射| 亚洲高清视频在线不卡| 国产精品国色综合久久| 日本免费视频午夜福利视频| 亚洲国产在线精品国偷产拍| 国产九色91在线观看精品| 国产精品久久9999| 黄色成年网站午夜在线观看| 亚洲天堂精品久久久| 亚洲变态另类色图天堂网| 日本阿v视频在线免费观看| 骚货自慰被发现爆操| 少妇人妻久久久久视频黄片| 国产精品入口麻豆啊啊啊 | 少妇被强干到高潮视频在线观看| 老鸭窝日韩精品视频观看| 大香蕉伊人中文字幕| 中文字幕之无码色多多| 成人福利视频免费在线| 精品久久久久久久久久久a√国产 日本女大学生的黄色小视频 | 欧美精品欧美极品欧美视频| 欧美老妇精品另类不卡片| 97精品视频在线观看| 姐姐的朋友2在线观看中文字幕| 午夜精品九一唐人麻豆嫩草成人 | 亚洲一区二区三区久久受| 黄片色呦呦视频免费看| 在线观看欧美黄片一区二区三区| 91九色porny国产蝌蚪视频| 亚洲变态另类色图天堂网| 99国内小视频在现欢看| 性欧美日本大妈母与子| 换爱交换乱高清大片| 97瑟瑟超碰在线香蕉| 人妻丝袜榨强中文字幕| 国产欧美精品不卡在线| av在线shipin| 日本性感美女视频网站| 丝袜长腿第一页在线| 爱爱免费在线观看视频| 亚洲狠狠婷婷综合久久app| 40道精品招牌菜特色| 国产乱子伦精品视频潮优女| 2020中文字幕在线播放| 久久久91蜜桃精品ad| 黄片大全在线观看观看| 中文字幕高清在线免费播放| 偷拍自拍福利视频在线观看| 真实国模和老外性视频| 2021久久免费视频| 欧美日韩不卡一区不区二区| 日日操夜夜撸天天干| 成年女人免费播放视频| 快插进小逼里大鸡吧视频| 国产普通话插插视频| 美女 午夜 在线视频| 黑人3p华裔熟女普通话| 欧美香蕉人妻精品一区二区| 日本韩国在线观看一区二区| 精品成人午夜免费看| av破解版在线观看| 深田咏美亚洲一区二区| 丁香花免费在线观看中文字幕| 日本性感美女视频网站| 午夜激情高清在线观看| 亚洲成高清a人片在线观看| 特一级特级黄色网片| 免费黄色成人午夜在线网站| 黑人性生活视频免费看| 亚洲福利午夜久久久精品电影网| 亚洲 欧美 精品 激情 偷拍 | 日本少妇的秘密免费视频| sejizz在线视频| 把腿张开让我插进去视频 | 天天摸天天干天天操科普| 手机看片福利盒子日韩在线播放| 在线观看免费视频色97| 亚洲综合一区成人在线| 在线免费91激情四射| 青青青视频自偷自拍38碰| 人妻熟女中文字幕aⅴ在线| 男人在床上插女人视频| av手机在线观播放网站| 91人妻人人做人人爽在线| 成年人免费看在线视频| 青青青青草手机在线视频免费看| 自拍偷拍日韩欧美亚洲| 亚洲高清免费在线观看视频| 国产超码片内射在线| 特黄老太婆aa毛毛片| 新97超碰在线观看| 午夜久久久久久久99| 99亚洲美女一区二区三区| 亚洲av日韩av网站| 精品人妻一二三区久久| 精品一区二区亚洲欧美| 在线制服丝袜中文字幕| 国产精品女邻居小骚货| 91麻豆精品久久久久| 欧美激情精品在线观看| 色爱av一区二区三区| 天天干天天爱天天色| 又粗又长 明星操逼小视频| 成熟丰满熟妇高潮xx×xx| 黄色成年网站午夜在线观看| 伊人成人综合开心网| 91国内视频在线观看| 欧美一区二区三区啪啪同性| 国产精品大陆在线2019不卡| 最近中文2019年在线看| a v欧美一区=区三区| 国产视频在线视频播放| 国内精品在线播放第一页| 91国内精品久久久久精品一| 视频 国产 精品 熟女 | 岛国黄色大片在线观看| 亚洲 清纯 国产com| 黄片大全在线观看观看| 国产视频网站国产视频| 成年女人免费播放视频| 天天干夜夜操天天舔| 国产白嫩美女一区二区| 色吉吉影音天天干天天操 | 2022中文字幕在线| 精品久久久久久久久久久a√国产| 视频一区二区在线免费播放| 91免费观看国产免费| 人妻熟女在线一区二区| 福利视频网久久91| 亚洲一区二区三区在线高清| 天天干天天爱天天色| 99精品视频之69精品视频 | gay gay男男瑟瑟在线网站| 亚洲福利精品视频在线免费观看| 91破解版永久免费| 精品国产午夜视频一区二区| 动漫精品视频在线观看| 亚洲青青操骚货在线视频| 欧美国产亚洲中英文字幕| 性色av一区二区三区久久久 | 2022国产综合在线干| 国产精品国产三级麻豆| 日本一区美女福利视频| av中文在线天堂精品| 成熟丰满熟妇高潮xx×xx | 黄工厂精品视频在线观看| 国产成人自拍视频播放| 精品亚洲在线免费观看| 国产黄色a级三级三级三级 | 天干天天天色天天日天天射| 国产伦精品一区二区三区竹菊| 美味人妻2在线播放| 成人伊人精品色xxxx视频| 性色av一区二区三区久久久| 欧美日韩激情啪啪啪| gay gay男男瑟瑟在线网站| 青青擦在线视频国产在线| 亚洲一区av中文字幕在线观看| 岛国黄色大片在线观看| 日韩成人免费电影二区| 欧美精品欧美极品欧美视频| 久久久久久九九99精品| 欧美交性又色又爽又黄麻豆| 国产黑丝高跟鞋视频在线播放| av中文字幕电影在线看| 自拍 日韩 欧美激情| 大鸡吧插入女阴道黄色片| av天堂中文免费在线| 久久久精品999精品日本| 欧美日韩高清午夜蜜桃大香蕉| 偷青青国产精品青青在线观看| 亚洲免费成人a v| 午夜国产福利在线观看| 亚洲精品一线二线在线观看| 天堂v男人视频在线观看| 色花堂在线av中文字幕九九 | 清纯美女在线观看国产| 鸡巴操逼一级黄色气| 一色桃子人妻一区二区三区| 大鸡吧插逼逼视频免费看| 欧美中国日韩久久精品| 色综合色综合色综合色| 天堂av在线播放免费| 亚洲欧美激情人妻偷拍| 黄色的网站在线免费看| 99久久99久国产黄毛片| 非洲黑人一级特黄片| 欧美怡红院视频在线观看| 欧美特色aaa大片| 久久久久久九九99精品| 亚洲成高清a人片在线观看| 欧美一区二区三区啪啪同性| 亚洲av无码成人精品区辽| 日本免费视频午夜福利视频| 自拍 日韩 欧美激情| 国产综合视频在线看片| 夜夜嗨av一区二区三区中文字幕| 成人av天堂丝袜在线观看| 免费无码人妻日韩精品一区二区| 国产1区,2区,3区| 亚洲va天堂va国产va久| 美女福利视频导航网站| 成人亚洲国产综合精品| 色97视频在线播放| 中文乱理伦片在线观看| 国产美女一区在线观看| 久久丁香花五月天色婷婷| 亚洲国产精品中文字幕网站| 97国产精品97久久| 大陆胖女人与丈夫操b国语高清| 韩国女主播精品视频网站| 抽查舔水白紧大视频| 亚洲中文字字幕乱码| 亚洲av香蕉一区区二区三区犇| av中文字幕在线导航| 中字幕人妻熟女人妻a62v网| 18禁免费av网站| 人妻丰满熟妇综合网| 日本在线不卡免费视频| 性感美女高潮视频久久久| 日韩中文字幕在线播放第二页| 国产精品成久久久久三级蜜臀av | 久久精品36亚洲精品束缚| 经典亚洲伊人第一页| 人妻久久无码中文成人| 精品av久久久久久久| 18禁污污污app下载| av网址在线播放大全| 五色婷婷综合狠狠爱| 特大黑人巨大xxxx| 免费av岛国天堂网站| 成人综合亚洲欧美一区 | 香港一级特黄大片在线播放 | 中文字幕高清在线免费播放| 日韩一区二区三区三州| 女警官打开双腿沦为性奴| 春色激情网欧美成人| 清纯美女在线观看国产| 免费一级特黄特色大片在线观看| 在线不卡成人黄色精品| 成人蜜桃美臀九一一区二区三区| 午夜福利资源综合激情午夜福利资| 国产精品污污污久久| 91精品国产91久久自产久强| 2022天天干天天操| 国产精品国产三级国产午| 国产欧美精品免费观看视频| jiujiure精品视频在线| yellow在线播放av啊啊啊| 日韩特级黄片高清在线看| av在线观看网址av| 美女大bxxxx内射| 亚洲第一黄色在线观看| 黄网十四区丁香社区激情五月天 | 青青草人人妻人人妻| 91亚洲手机在线视频播放| 在线亚洲天堂色播av电影| 色哟哟在线网站入口| 日韩无码国产精品强奸乱伦| 沙月文乃人妻侵犯中文字幕在线| 99国内小视频在现欢看| 韩国三级aaaaa高清视频| 亚洲精品精品国产综合| 女生自摸在线观看一区二区三区 | 人人妻人人爽人人澡人人精品| 亚洲成人av一区久久| 老司机你懂得福利视频| 自拍偷拍亚洲欧美在线视频| 国产在线自在拍91国语自产精品| 亚洲午夜电影在线观看| 亚洲熟妇久久无码精品| 国产一区成人在线观看视频| 中文人妻AV久久人妻水| 亚洲欧美一区二区三区电影| 老司机福利精品视频在线| 最新91精品视频在线| 91国内精品自线在拍白富美| 国产黄色高清资源在线免费观看| 久草电影免费在线观看| 香蕉aⅴ一区二区三区| 国际av大片在线免费观看| 日韩a级黄色小视频| 91欧美在线免费观看| 欧美成人猛片aaaaaaa| 五月婷婷在线观看视频免费| 日本熟妇一区二区x x| 亚洲精品乱码久久久久久密桃明| 综合精品久久久久97| av在线免费资源站| 国产精品一区二区av国| 3337p日本欧洲大胆色噜噜| 亚洲av可乐操首页| 51国产成人精品视频| 18禁美女黄网站色大片下载| 少妇系列一区二区三区视频| 亚洲乱码中文字幕在线| 姐姐的朋友2在线观看中文字幕| 精品老妇女久久9g国产| 亚洲国际青青操综合网站| 91极品新人『兔兔』精品新作| 亚洲一区av中文字幕在线观看| 91国偷自产一区二区三区精品| 性生活第二下硬不起来| 人妻丝袜诱惑我操她视频| 午夜美女少妇福利视频| 天天操天天干天天插| 啊啊啊想要被插进去视频| 成人国产影院在线观看| 欧美成一区二区三区四区| 亚洲女人的天堂av| 在线不卡日韩视频播放| 懂色av之国产精品| 黄页网视频在线免费观看| 超碰97人人澡人人| 欧美成人精品在线观看| 国产精品视频资源在线播放| 性感美女福利视频网站| 久久热久久视频在线观看| 久久三久久三久久三久久| 大鸡吧插逼逼视频免费看| 国产视频网站国产视频| 青青青青草手机在线视频免费看 | 78色精品一区二区三区| 欧美黄片精彩在线免费观看| 一区二区三区久久中文字幕| 一区二区三区四区中文| 亚洲成人熟妇一区二区三区| sspd152中文字幕在线| 午夜激情久久不卡一区二区| 国产麻豆精品人妻av| 真实国模和老外性视频| 日韩中文字幕福利av| 亚洲av成人网在线观看| 蝴蝶伊人久久中文娱乐网| 白嫩白嫩美女极品国产在线观看| 日本精品一区二区三区在线视频。| 亚洲成人激情视频免费观看了| 亚洲中文字幕人妻一区| 亚洲男人的天堂a在线| 亚洲国际青青操综合网站| 欧美viboss性丰满| 午夜激情久久不卡一区二区| 97人人妻人人澡人人爽人人精品| 国产精品中文av在线播放| 国产精品自拍在线视频| 粉嫩欧美美人妻小视频| 精品亚洲中文字幕av| 日韩加勒比东京热二区| 新97超碰在线观看| 一级黄片大鸡巴插入美女| 操的小逼流水的文章| 绝色少妇高潮3在线观看| 欧美专区第八页一区在线播放 | 在线观看免费视频网| 天天操天天操天天碰| 青青在线视频性感少妇和隔壁黑丝| 成人av亚洲一区二区| 中文亚洲欧美日韩无线码| 一区二区视频在线观看免费观看| 福利午夜视频在线观看| 国产熟妇人妻ⅹxxxx麻豆| 视频一区二区综合精品| 国产视频一区在线观看| 免费观看国产综合视频| 天天摸天天干天天操科普| 日本一区二区三区免费小视频| 亚洲精品欧美日韩在线播放| 绝顶痉挛大潮喷高潮无码| 久久久久久久99精品| 性欧美激情久久久久久久| 97超碰免费在线视频| 一区二区麻豆传媒黄片| 91九色porny国产在线| 成年美女黄网站18禁久久| 天天操天天干天天艹| 色天天天天射天天舔| 亚洲欧美一卡二卡三卡| 亚洲免费视频欧洲免费视频| 92福利视频午夜1000看| 亚洲精品在线资源站| 亚洲美女自偷自拍11页| 综合激情网激情五月五月婷婷| 国产成人精品午夜福利训2021| 97少妇精品在线观看| 中国熟女一区二区性xx| 99一区二区在线观看| 亚洲一区二区三区在线高清 | 亚洲另类在线免费观看| 欧美美女人体视频一区| 桃色视频在线观看一区二区| 欧美亚洲自偷自拍 在线| 天天日天天日天天射天天干 | 成年人该看的视频黄免费| 91欧美在线免费观看| 久久久精品精品视频视频| 欧美3p在线观看一区二区三区| 99久久99久国产黄毛片| 日韩精品中文字幕播放| 大鸡八强奸视频在线观看| 欧美国品一二三产区区别| 孕妇奶水仑乱A级毛片免费看| 亚洲av第国产精品| 亚洲一区二区三区久久受 | 天码人妻一区二区三区在线看 | 93人妻人人揉人人澡人人| 久久尻中国美女视频| 国产成人综合一区2区| 国产福利小视频免费观看| 一区二区三区激情在线| 成人av亚洲一区二区| 午夜精品九一唐人麻豆嫩草成人| 视频一区二区综合精品| 日韩欧美国产精品91| 欧美一区二区三区四区性视频| 国产亚洲精品欧洲在线观看| 插逼视频双插洞国产操逼插洞| 亚洲国产精品美女在线观看| 无码中文字幕波多野不卡| 中文字幕一区二区亚洲一区| 经典亚洲伊人第一页| 美女小视频网站在线| 亚洲欧美清纯唯美另类| 91久久精品色伊人6882| 国产精品熟女久久久久浪潮| 久久久噜噜噜久久熟女av| 日本精品一区二区三区在线视频。| 动漫美女的小穴视频| 国产清纯美女al在线| 蜜桃专区一区二区在线观看| av破解版在线观看| 日韩精品激情在线观看| 久久久噜噜噜久久熟女av| 国产一级精品综合av| 婷婷久久久综合中文字幕| 北条麻妃肉色丝袜视频| 精内国产乱码久久久久久| 国产又粗又硬又猛的毛片视频| 91精品国产91青青碰| 啊慢点鸡巴太大了啊舒服视频| 99热99这里精品6国产| 最新91精品视频在线| 色噜噜噜噜18禁止观看| 人妻少妇精品久久久久久| 日韩a级精品一区二区| 91精品国产91久久自产久强| 爱有来生高清在线中文字幕| 亚洲精品一线二线在线观看| 久久久久久国产精品| 欧美成人综合视频一区二区| 国产一线二线三线的区别在哪| 日韩在线中文字幕色| 11久久久久久久久久久| 日日爽天天干夜夜操| av欧美网站在线观看| 青青草亚洲国产精品视频| 国产夫妻视频在线观看免费| 久久三久久三久久三久久| 日本免费午夜视频网站| 亚洲成人av在线一区二区| 1024久久国产精品| 搡老妇人老女人老熟女| 中文字幕欧美日韩射射一| 美女大bxxxx内射| 亚洲人一区二区中文字幕| 97成人免费在线观看网站| 亚洲国产精品免费在线观看| 玩弄人妻熟妇性色av少妇| okirakuhuhu在线观看| 日韩av大胆在线观看| 亚洲欧美日韩视频免费观看| 日韩欧美国产精品91| 91she九色精品国产| 国产视频精品资源网站| 韩国爱爱视频中文字幕| 亚洲av人人澡人人爽人人爱| 亚洲乱码中文字幕在线| 一本久久精品一区二区| 亚洲另类伦春色综合小| 欧美视频一区免费在线| 十八禁在线观看地址免费 | 97国产在线av精品| 一区二区三区四区中文| 国产精品欧美日韩区二区| 国产老熟女伦老熟妇ⅹ| 免费男阳茎伸入女阳道视频 | 国产精品久久久久久久精品视频| 国产视频网站一区二区三区| 欧美色呦呦最新网址| 久草电影免费在线观看| 操的小逼流水的文章| 日韩欧美高清免费在线| 久久艹在线观看视频| 91香蕉成人app下载| 97超碰免费在线视频| 国产亚洲欧美45p| 91av精品视频在线| av黄色成人在线观看| 日比视频老公慢点好舒服啊| 亚洲精品欧美日韩在线播放 | jiuse91九色视频| 午夜精品久久久久麻豆影视| 99久久99一区二区三区| 高潮视频在线快速观看国家快速 | 国产夫妻视频在线观看免费| 亚洲成a人片777777| 大胆亚洲av日韩av| 超碰公开大香蕉97| 亚洲男人让女人爽的视频| 美女被肏内射视频网站| 亚洲精品乱码久久久本| 偷拍美女一区二区三区| 91国产在线免费播放| 2012中文字幕在线高清| 国产精彩福利精品视频| 一区二区三区久久久91| 91久久国产成人免费网站| 狠狠操操操操操操操操操| av俺也去在线播放| 久久久久久久久久久免费女人| av老司机亚洲一区二区| 人妻久久久精品69系列| 久久精品国产亚洲精品166m| 男人操女人的逼免费视频| 天天想要天天操天天干| 91试看福利一分钟| 亚洲欧美清纯唯美另类| 丝袜美腿欧美另类 中文字幕| 男女第一次视频在线观看| 美女骚逼日出水来了| 伊人成人综合开心网| 97人妻总资源视频| 亚洲少妇人妻无码精品| 深夜男人福利在线观看| 中文字幕日本人妻中出| 最新国产亚洲精品中文在线| 经典国语激情内射视频| 端庄人妻堕落挣扎沉沦| 亚洲人一区二区中文字幕| 91国语爽死我了不卡| 97超碰国语国产97超碰| 久草视频在线看免费| 中文字幕亚洲久久久| 偷拍自拍福利视频在线观看| 另类av十亚洲av| 色97视频在线播放| 少妇人妻二三区视频| 欧美视频不卡一区四区| 免费看国产av网站| 东游记中文字幕版哪里可以看到| 顶级尤物粉嫩小尤物网站| 宅男噜噜噜666国产| 日本少妇在线视频大香蕉在线观看 | 亚洲综合另类精品小说| 久草视频首页在线观看| 日本高清在线不卡一区二区 | 欧美一区二区中文字幕电影 | 少妇系列一区二区三区视频| 亚洲一级av大片免费观看| 日本性感美女视频网站| 亚洲粉嫩av一区二区三区| 美味人妻2在线播放| 老师啊太大了啊啊啊尻视频| 都市家庭人妻激情自拍视频| 欧洲欧美日韩国产在线| 中文人妻AV久久人妻水| 日本脱亚入欧是指什么| 日韩一区二区电国产精品| 国产午夜男女爽爽爽爽爽视频| 天堂va蜜桃一区入口| 婷婷六月天中文字幕| 色哟哟在线网站入口| 欧美视频一区免费在线| 97青青青手机在线视频| av在线播放国产不卡| 国产九色91在线观看精品| 亚洲av极品精品在线观看| 国产精品视频一区在线播放| 传媒在线播放国产精品一区 | 日本黄色特一级视频| lutube在线成人免费看| 欧美精品免费aaaaaa| 男人天堂av天天操| 中文字幕视频一区二区在线观看 | 天天干天天搞天天摸| 18禁美女无遮挡免费| 三级av中文字幕在线观看| 亚洲狠狠婷婷综合久久app| 18禁网站一区二区三区四区| 最近的中文字幕在线mv视频| v888av在线观看视频| 夜色撩人久久7777| 日本韩国亚洲综合日韩欧美国产| 五十路熟女av天堂| avjpm亚洲伊人久久| 久久久噜噜噜久久熟女av| 青青青青操在线观看免费| 爱有来生高清在线中文字幕| 国产一区二区久久久裸臀| 欧美爆乳肉感大码在线观看| 国产剧情演绎系列丝袜高跟| 91精品一区二区三区站长推荐| 亚洲在线观看中文字幕av| 日本乱人一区二区三区| 视频二区在线视频观看| 日韩黄色片在线观看网站| 精品国产污污免费网站入口自| 天天操天天干天天插| 国产福利小视频二区| 97超碰人人搞人人| 亚洲综合另类精品小说| 五十路老熟女码av| 日本男女操逼视频免费看| 国产在线免费观看成人| 色花堂在线av中文字幕九九 | 欧美一区二区三区乱码在线播放| 国产精品精品精品999| 久久久久久国产精品| 成人蜜臀午夜久久一区| 2021国产一区二区| 免费无码人妻日韩精品一区二区| 影音先锋女人av噜噜色| 丝袜美腿欧美另类 中文字幕| 特大黑人巨大xxxx| 蜜臀成人av在线播放| 亚洲熟色妇av日韩熟色妇在线| 午夜精品久久久久麻豆影视| 日本特级片中文字幕| 亚洲免费在线视频网站| 国产美女一区在线观看| 97成人免费在线观看网站| 男女之间激情网午夜在线| 日韩激情文学在线视频| 一区二区三区四区中文| 亚洲 欧美 自拍 偷拍 在线| 激情五月婷婷综合色啪| 一区二区在线视频中文字幕| 国产又粗又猛又爽又黄的视频在线| 又色又爽又黄的美女裸体| 欧美特色aaa大片| 熟女国产一区亚洲中文字幕| 精品老妇女久久9g国产| 最新国产精品拍在线观看| 91国内精品久久久久精品一| 久久精品亚洲国产av香蕉| 中文字幕高清免费在线人妻 | 少妇高潮一区二区三区| 国产黄色片在线收看| 日韩精品激情在线观看| 欧美在线精品一区二区三区视频 | 国产又色又刺激在线视频| 亚洲熟妇x久久av久久| 午夜毛片不卡在线看| 福利视频一区二区三区筱慧| 国产精品人妻一区二区三区网站| 亚洲av成人免费网站| 自拍偷拍 国产资源| 国产高清97在线观看视频| 香港三日本三韩国三欧美三级| 男人天堂最新地址av| 国产va精品免费观看| 国产精品人妻熟女毛片av久| 天天插天天色天天日| 夜色17s精品人妻熟女| 日本黄在免费看视频| 国产成人午夜精品福利| 国产卡一卡二卡三乱码手机| 男女啪啪视频免费在线观看| 动漫黑丝美女的鸡巴| 瑟瑟视频在线观看免费视频| 不卡精品视频在线观看| 综合激情网激情五月天| 91在线免费观看成人| huangse网站在线观看| 欧美日韩情色在线观看| 这里只有精品双飞在线播放| 亚洲av无乱一区二区三区性色| 中文字幕在线乱码一区二区 | 亚洲av成人网在线观看| 18禁美女无遮挡免费| 伊人综合免费在线视频| 青青青青青青青在线播放视频 | 11久久久久久久久久久| 无码国产精品一区二区高潮久久4| 欧美一区二区三区在线资源| 香蕉aⅴ一区二区三区| 大肉大捧一进一出好爽在线视频| 中文字幕在线免费第一页| 国产精品久久综合久久| 少妇高潮一区二区三区| 成年人该看的视频黄免费| 欧美精产国品一二三产品区别大吗| 91中文字幕最新合集| 偷拍自拍福利视频在线观看| 端庄人妻堕落挣扎沉沦| 国产在线免费观看成人| 91极品大一女神正在播放| 一区二区三区国产精选在线播放| 亚洲精品在线资源站| 在线制服丝袜中文字幕| 91国产资源在线视频| 动漫精品视频在线观看| 3344免费偷拍视频| 超碰公开大香蕉97| 欧美黑人与人妻精品| 日韩欧美一级精品在线观看| 粗大的内捧猛烈进出爽大牛汉子| 男人天堂最新地址av| 视频在线免费观看你懂得| 亚洲av男人的天堂你懂的| 久久热久久视频在线观看| 青青社区2国产视频| 亚洲精品乱码久久久本| 亚洲熟女综合色一区二区三区四区| 国产91嫩草久久成人在线视频| 日韩欧美高清免费在线| 亚洲精品国品乱码久久久久| av中文字幕在线观看第三页 | 精品黑人巨大在线一区| 国产高清精品一区二区三区| 人人妻人人爽人人澡人人精品| 日本真人性生活视频免费看| 天天摸天天亲天天舔天天操天天爽| 亚洲av自拍偷拍综合| 日本乱人一区二区三区| 少妇深喉口爆吞精韩国| 99精品久久久久久久91蜜桃| 日视频免费在线观看| 66久久久久久久久久久| 日本少妇在线视频大香蕉在线观看| 少妇露脸深喉口爆吞精| 老司机福利精品免费视频一区二区| av中文字幕电影在线看| 涩涩的视频在线观看视频| 亚洲精品无码色午夜福利理论片| 欧美地区一二三专区| 成人av在线资源网站| 色偷偷伊人大杳蕉综合网| 韩国男女黄色在线观看| 天天操夜夜操天天操天天操| 天干天天天色天天日天天射| 18禁美女黄网站色大片下载| 中文字幕av第1页中文字幕| 香港一级特黄大片在线播放| 51国产成人精品视频| 不卡一不卡二不卡三| 国产精品一区二区久久久av| 久久精品亚洲国产av香蕉| 涩爱综合久久五月蜜臀| 午夜精品一区二区三区城中村| 亚洲熟妇久久无码精品| 自拍偷拍,中文字幕| 粗大的内捧猛烈进出爽大牛汉子| 国产va精品免费观看| 国产之丝袜脚在线一区二区三区| 亚洲中文精品人人免费| 亚洲成人熟妇一区二区三区 | 偷偷玩弄新婚人妻h视频| 91国产在线免费播放| 黑人解禁人妻叶爱071| av在线shipin| 欧美亚洲牲夜夜综合久久| 国产福利小视频二区| 日韩黄色片在线观看网站| 青娱乐在线免费视频盛宴| 中文字幕视频一区二区在线观看| 国产无遮挡裸体免费直播视频| 免费高清自慰一区二区三区网站| 久草视频在线免播放| 三上悠亚和黑人665番号| 中文字幕奴隷色的舞台50| 欧美爆乳肉感大码在线观看| 人妻少妇精品久久久久久| 91精品免费久久久久久| 一区国内二区日韩三区欧美| 亚洲精品国产综合久久久久久久久| 精品成人午夜免费看| 国产精品视频资源在线播放| 亚洲天堂精品福利成人av| 日韩av中文在线免费观看| 国产熟妇乱妇熟色T区| 五月精品丁香久久久久福利社| 天天爽夜夜爽人人爽QC| 激情内射在线免费观看| 人妻少妇中文有码精品| 91麻豆精品91久久久久同性| 含骚鸡巴玩逼逼视频| 成人sm视频在线观看| 国产精品视频男人的天堂| 早川濑里奈av黑人番号| 国产伦精品一区二区三区竹菊| 精品久久久久久久久久中文蒉| 国产亚洲视频在线观看| 亚洲乱码中文字幕在线| 精品一区二区三区午夜| 国产视频网站一区二区三区| 国产超码片内射在线| 国产在线拍揄自揄视频网站| 久久一区二区三区人妻欧美| av乱码一区二区三区| 人妻无码色噜噜狠狠狠狠色| 亚洲综合色在线免费观看| 91麻豆精品91久久久久同性| 麻豆性色视频在线观看| 美女张开两腿让男人桶av| 国产一区二区神马久久| 国产日韩av一区二区在线| 精品国产高潮中文字幕| 99国内小视频在现欢看| 成人福利视频免费在线| 午夜福利资源综合激情午夜福利资| 在线观看911精品国产| 人妻久久无码中文成人| 97青青青手机在线视频| 亚洲色偷偷综合亚洲AV伊人| 国产精彩对白一区二区三区| 青青草国内在线视频精选| 绝顶痉挛大潮喷高潮无码| 天堂av狠狠操蜜桃| gogo国模私拍视频| 天天摸天天干天天操科普| xxx日本hd高清| 99久久中文字幕一本人| 一区二区熟女人妻视频| 国产福利小视频二区| 欧美一级色视频美日韩| 亚洲区美熟妇久久久久| 亚洲熟女女同志女同| 日韩亚洲高清在线观看| 天天日夜夜操天天摸| 91九色porny国产在线| 青青尤物在线观看视频网站| 人人妻人人爽人人添夜| 东京热男人的av天堂| 色综合天天综合网国产成人| 内射久久久久综合网| 最新中文字幕乱码在线| 国产亚洲精品视频合集| 成人30分钟免费视频| 天天操天天射天天操天天天| 又粗又长 明星操逼小视频 | 少妇人妻真实精品视频| 福利在线视频网址导航| 亚洲国产精品黑丝美女| 亚洲变态另类色图天堂网| 午夜精品亚洲精品五月色| 一区二区三区麻豆福利视频| 大鸡巴后入爆操大屁股美女| 亚洲天堂第一页中文字幕 | 亚洲人成精品久久久久久久| 后入美女人妻高清在线| 亚洲美女高潮喷浆视频| 大尺度激情四射网站| 清纯美女在线观看国产| 亚国产成人精品久久久| 男女之间激情网午夜在线| 亚洲av人人澡人人爽人人爱| 美女骚逼日出水来了| 亚洲综合一区二区精品久久| 国产大学生援交正在播放| 黑人大几巴狂插日本少妇| 97少妇精品在线观看| 啊啊好慢点插舔我逼啊啊啊视频| 中文字幕无码日韩专区免费| 天堂va蜜桃一区入口| 亚洲推理片免费看网站| 欧美日本国产自视大全| 粉嫩欧美美人妻小视频| 天天日天天干天天舔天天射| 人妻久久无码中文成人| 91av精品视频在线| 国产精品久久综合久久| 中文字幕一区二区三区人妻大片| 国产亚洲欧美45p| 初美沙希中文字幕在线| 91免费观看国产免费| 久久美欧人妻少妇一区二区三区| 少妇高潮无套内谢麻豆| 中国黄片视频一区91| 9久在线视频只有精品| 啪啪啪啪啪啪啪啪av| 人妻激情图片视频小说| 国产性色生活片毛片春晓精品| 无码国产精品一区二区高潮久久4 日韩欧美一级精品在线观看 | 福利在线视频网址导航| 日本最新一二三区不卡在线 | 中文字幕亚洲中文字幕| 国产又色又刺激在线视频| 欧美成人精品欧美一级黄色| rct470中文字幕在线| 久久综合老鸭窝色综合久久| 91亚洲国产成人精品性色| 天天射,天天操,天天说| 国产综合精品久久久久蜜臀| 东京热男人的av天堂| 中文字幕第1页av一天堂网| 婷婷六月天中文字幕| 瑟瑟视频在线观看免费视频| 98视频精品在线观看| 福利视频一区二区三区筱慧| 欧美日韩一区二区电影在线观看| 精品成人啪啪18免费蜜臀| 成人亚洲精品国产精品| 中文字幕在线乱码一区二区| 岛国免费大片在线观看| 999九九久久久精品| 在线观看911精品国产| 亚洲色偷偷综合亚洲AV伊人| 亚洲av色图18p| 国产亚洲视频在线二区| 99婷婷在线观看视频| av手机免费在线观看高潮| 亚洲国产成人最新资源| 人妻3p真实偷拍一二区| 清纯美女在线观看国产| 91啪国自产中文字幕在线| gav成人免费播放| 亚洲在线免费h观看网站| 免费黄高清无码国产| 免费人成黄页网站在线观看国产| 亚洲最大黄了色网站| 国产性色生活片毛片春晓精品| 在线制服丝袜中文字幕| 色97视频在线播放| 久草免费人妻视频在线| 欧美性受xx黑人性猛交| 国产视频网站一区二区三区| 直接能看的国产av| 春色激情网欧美成人| 午夜在线观看岛国av,com| 亚洲欧美清纯唯美另类| 一区二区三区麻豆福利视频| 狠狠操操操操操操操操操| 成年人啪啪视频在线观看| 99精品视频在线观看免费播放| 亚洲精品在线资源站| 高清成人av一区三区| 天天干天天操天天玩天天射| 男人的天堂av日韩亚洲| 91久久国产成人免费网站| 黄色av网站免费在线| 91色老99久久九九爱精品| 欧美亚洲中文字幕一区二区三区| 亚国产成人精品久久久| 亚洲午夜伦理视频在线| 国产男女视频在线播放| 美女张开两腿让男人桶av| 99久久激情婷婷综合五月天| 日韩亚国产欧美三级涩爱| 国产av欧美精品高潮网站| 丰满少妇人妻xxxxx| 午夜场射精嗯嗯啊啊视频| 亚洲在线免费h观看网站| 亚洲精品国产综合久久久久久久久| 一区二区三区视频,福利一区二区| 777奇米久久精品一区| 人妻丝袜精品中文字幕| 夜鲁夜鲁狠鲁天天在线| 在线观看av观看av| 18禁精品网站久久| 2020久久躁狠狠躁夜夜躁| 精品成人啪啪18免费蜜臀| 日韩午夜福利精品试看| 日韩二区视频一线天婷婷五| 男生舔女生逼逼的视频| 日本韩国在线观看一区二区| 毛片av在线免费看| 中国黄色av一级片| av中文字幕国产在线观看| 一级黄色av在线观看| 日本人妻欲求不满中文字幕| 国产精品中文av在线播放| 大香蕉大香蕉大香蕉大香蕉大香蕉 | 91免费福利网91麻豆国产精品| 日本美女成人在线视频| 欧美精品资源在线观看| 丰满少妇翘臀后进式| 内射久久久久综合网| 中国熟女@视频91| 久久h视频在线观看| 国产乱子伦一二三区| 国产视频精品资源网站| 都市家庭人妻激情自拍视频| 同居了嫂子在线播高清中文| 性生活第二下硬不起来| 专门看国产熟妇的网站| 91九色porny国产在线| 久草视频首页在线观看| 青青草人人妻人人妻| 久久久精品999精品日本| 97超碰人人搞人人| 91超碰青青中文字幕| 一二三区在线观看视频| 一区国内二区日韩三区欧美| 国产欧美精品免费观看视频| av手机在线观播放网站| 欧美性受xx黑人性猛交| 亚洲成人国产综合一区| 日韩人妻xxxxx| 天天综合天天综合天天网| 亚洲va国产va欧美精品88| 欧美一区二区三区激情啪啪啪| 日韩亚洲高清在线观看| 91色九色porny| 黄色中文字幕在线播放| 青青草精品在线视频观看| 色在线观看视频免费的| 亚洲人妻30pwc| 瑟瑟视频在线观看免费视频| 经典国语激情内射视频| 天堂中文字幕翔田av| 成年午夜免费无码区| 午夜在线精品偷拍一区二| 中国老熟女偷拍第一页| 久久久久久97三级| 日本成人一区二区不卡免费在线| 日韩熟女系列一区二区三区| av亚洲中文天堂字幕网| 国产又粗又硬又猛的毛片视频| 国产亚洲精品视频合集| 欧美日韩高清午夜蜜桃大香蕉| 日韩视频一区二区免费观看| 中文字幕之无码色多多| 精产国品久久一二三产区区别| 国产成人精品久久二区91| 4个黑人操素人视频网站精品91| 一色桃子久久精品亚洲 | 大尺度激情四射网站| 淫秽激情视频免费观看| 操人妻嗷嗷叫视频一区二区| 狠狠嗨日韩综合久久| 午夜福利资源综合激情午夜福利资| 国产高清精品极品美女| 欧美视频中文一区二区三区| 不卡一区一区三区在线| 曰本无码人妻丰满熟妇啪啪| 国产揄拍高清国内精品对白| 2020中文字幕在线播放| 亚洲综合色在线免费观看| 精品av国产一区二区三区四区| 中文字幕 人妻精品| 亚洲中文精品字幕在线观看| 玩弄人妻熟妇性色av少妇| 在线视频国产欧美日韩| 最新国产精品网址在线观看| 经典亚洲伊人第一页| 天美传媒mv视频在线观看| 黄色的网站在线免费看| 国产成人一区二区三区电影网站 | 天堂中文字幕翔田av| 国产中文精品在线观看| 欧美一级视频一区二区| 亚洲欧美激情中文字幕| 视频一区 视频二区 视频| 亚洲av自拍偷拍综合| 国产黄色大片在线免费播放| av在线shipin| 中国把吊插入阴蒂的视频| 亚洲一区二区三区av网站| 中英文字幕av一区| 91免费放福利在线观看| 啊啊啊想要被插进去视频| 91精品国产91久久自产久强 | 成熟丰满熟妇高潮xx×xx | av男人天堂狠狠干| 国产精彩对白一区二区三区| free性日本少妇| 播放日本一区二区三区电影| av资源中文字幕在线观看| 中文字幕日韩人妻在线三区| 国产午夜亚洲精品不卡在线观看| 99精品国产aⅴ在线观看| 66久久久久久久久久久| 日本www中文字幕| 亚洲精品成人网久久久久久小说| 100%美女蜜桃视频| 100%美女蜜桃视频| 女同久久精品秋霞网| 91大屁股国产一区二区| 欧洲黄页网免费观看| 一区二区三区日韩久久| 国产精品亚洲а∨天堂免| 亚洲精品精品国产综合| 中国熟女一区二区性xx| 91精品啪在线免费| 伊人开心婷婷国产av| 一区二区三区日本伦理| 97香蕉碰碰人妻国产樱花| 91久久人澡人人添人人爽乱| 一区二区熟女人妻视频| 国产高潮无码喷水AV片在线观看| 毛茸茸的大外阴中国视频| 在线 中文字幕 一区| 中文 成人 在线 视频| 色吉吉影音天天干天天操| 91天堂天天日天天操| 欧美日韩中文字幕欧美| www骚国产精品视频| 日本在线一区二区不卡视频| 免费观看理论片完整版| 亚洲国产免费av一区二区三区| 国产性生活中老年人视频网站| 2021天天色天天干| 久草视频在线免播放| 久久久久久久久久久免费女人| 天天日天天日天天擦| 91精品啪在线免费| 午夜91一区二区三区| 真实国产乱子伦一区二区| 国产97视频在线精品| 97超碰免费在线视频| 亚洲欧洲一区二区在线观看| 啪啪啪啪啪啪啪免费视频| 日本av熟女在线视频| 人妻在线精品录音叫床| 香蕉aⅴ一区二区三区| 五十路在线观看完整版| 夜色福利视频在线观看| www骚国产精品视频| 天天操天天插天天色| 日日夜夜大香蕉伊人| 少妇人妻100系列| 鸡巴操逼一级黄色气| 成人高潮aa毛片免费| 含骚鸡巴玩逼逼视频| 久久久精品欧洲亚洲av| 日韩欧美国产一区ab| 亚洲激情唯美亚洲激情图片| 亚洲青青操骚货在线视频| 馒头大胆亚洲一区二区| 99精品视频在线观看婷婷| 天天操天天射天天操天天天| 在线国产日韩欧美视频| av男人天堂狠狠干| 午夜在线一区二区免费| heyzo蜜桃熟女人妻| 欧美黄片精彩在线免费观看| 日韩近亲视频在线观看| 99国产精品窥熟女精品| 国产一线二线三线的区别在哪 | 岛国毛片视频免费在线观看| 精品国产午夜视频一区二区| 亚洲av极品精品在线观看| 青青草视频手机免费在线观看| 日韩亚国产欧美三级涩爱| 青青草视频手机免费在线观看| 亚洲欧美精品综合图片小说| 亚洲国产欧美一区二区丝袜黑人| 欧美性受xx黑人性猛交| 清纯美女在线观看国产| 一区二区熟女人妻视频| 免费看国产又粗又猛又爽又黄视频| 午夜精品久久久久久99热| 大香蕉大香蕉在线有码 av| 亚洲精品国品乱码久久久久| 亚洲国产成人最新资源| 日韩美在线观看视频黄| 高潮视频在线快速观看国家快速| 91国内视频在线观看| 97超碰最新免费在线观看| 亚洲人妻av毛片在线| 欧洲精品第一页欧洲精品亚洲| 激情色图一区二区三区| 久久久久国产成人精品亚洲午夜| 亚洲av自拍偷拍综合| 大黑人性xxxxbbbb| 国产免费av一区二区凹凸四季| 亚洲av日韩av网站| 亚洲区美熟妇久久久久| 国产精品伦理片一区二区| 亚洲 图片 欧美 图片| 中文字幕日韩精品日本| 天天干天天爱天天色| 日本精品一区二区三区在线视频。 | 亚洲综合乱码一区二区| 亚洲专区激情在线观看视频| 成人18禁网站在线播放| 天天摸天天亲天天舔天天操天天爽 | ka0ri在线视频| 欧美日韩情色在线观看| 黑人3p华裔熟女普通话| 天天夜天天日天天日| 久草视频首页在线观看| 啊慢点鸡巴太大了啊舒服视频| av老司机精品在线观看| 国产无遮挡裸体免费直播视频| 精品日产卡一卡二卡国色天香| 国产三级片久久久久久久| 粉嫩av懂色av蜜臀av| 鸡巴操逼一级黄色气| 久久久久久性虐视频| 成人福利视频免费在线| 久久国产精品精品美女| 日韩中文字幕精品淫| 日本黄在免费看视频| 在线制服丝袜中文字幕| 亚洲成高清a人片在线观看| 大学生A级毛片免费视频| 亚洲成人午夜电影在线观看| 夜色撩人久久7777| 大香蕉伊人中文字幕| 亚洲最大黄了色网站| 国产欧美精品一区二区高清| 欧美老鸡巴日小嫩逼| 日韩欧美一级aa大片| 中文字幕无码日韩专区免费| avjpm亚洲伊人久久| 国产精品自拍在线视频| 美洲精品一二三产区区别| 狠狠躁狠狠爱网站视频| 国产精品一区二区三区蜜臀av| 啊啊好大好爽啊啊操我啊啊视频 | 直接观看免费黄网站| 亚洲伊人久久精品影院一美女洗澡 | 亚洲第17页国产精品| 蜜桃视频在线欧美一区| 欧美日韩一级黄片免费观看| 人妻丰满熟妇综合网| 亚洲Av无码国产综合色区| 欧美黄片精彩在线免费观看| 欧美一区二区三区高清不卡tv| 夜女神免费福利视频| 中文字幕av男人天堂| 国产精品国产三级国产午| 传媒在线播放国产精品一区| 在线成人日韩av电影| aaa久久久久久久久| 男生用鸡操女生视频动漫| 日韩中文字幕福利av| 91九色porny蝌蚪国产成人| 夜女神免费福利视频| 91国产在线免费播放| 在线免费观看欧美小视频| 大学生A级毛片免费视频| 天天躁日日躁狠狠躁av麻豆| 婷婷久久一区二区字幕网址你懂得| 欧美亚洲一二三区蜜臀| 国产日韩精品电影7777| 欧美怡红院视频在线观看| 一区二区三区日本伦理| 国产午夜福利av导航| 天天爽夜夜爽人人爽QC| 欧美一区二区三区久久久aaa| 绝顶痉挛大潮喷高潮无码 | 国产白袜脚足J棉袜在线观看| 中文字幕一区二区三区人妻大片| 视频在线亚洲一区二区| 欧美一级片免费在线成人观看 | av在线资源中文字幕| 三级等保密码要求条款| 福利一二三在线视频观看| 亚洲午夜精品小视频| 欧美一区二区三区四区性视频| 亚洲综合一区成人在线| www骚国产精品视频| 欧美视频中文一区二区三区| 日韩精品电影亚洲一区| 亚洲国产精品免费在线观看| 日韩av大胆在线观看| 91国产资源在线视频| 自拍偷拍亚洲另类色图| 天天干天天插天天谢| 天天干狠狠干天天操| 超污视频在线观看污污污| 成人亚洲国产综合精品| 亚洲精品精品国产综合| 免费看高清av的网站| 久久美欧人妻少妇一区二区三区| 大尺度激情四射网站| 91国内精品久久久久精品一| 成人免费公开视频无毒 | 涩涩的视频在线观看视频| 日本少妇的秘密免费视频| okirakuhuhu在线观看| 国产精品一区二区av国| 青青色国产视频在线| 国产九色91在线观看精品| 日本女人一级免费片| 东京热男人的av天堂| 欧美第一页在线免费观看视频| 国产刺激激情美女网站| 国产麻豆精品人妻av| 一区二区视频视频视频| 国产成人小视频在线观看无遮挡| 久久久久久九九99精品| 亚洲免费av在线视频| 1024久久国产精品| 色婷婷久久久久swag精品| 亚洲 色图 偷拍 欧美| 视频 一区二区在线观看| 青青青视频自偷自拍38碰| 免费无毒热热热热热热久| 香蕉片在线观看av| 欧美日韩一级黄片免费观看| 超黄超污网站在线观看| 女同性ⅹxx女同hd| 婷婷六月天中文字幕| 青草久久视频在线观看| 人人妻人人澡人人爽人人dvl| 天天操天天污天天射| 精品黑人巨大在线一区| 亚洲一区二区三区久久受 | 丰满少妇翘臀后进式| 在线观看911精品国产| 最新日韩av传媒在线| 亚洲激情偷拍一区二区| 又色又爽又黄又刺激av网站| 欧美aa一级一区三区四区| 亚洲av人人澡人人爽人人爱| 亚洲伊人久久精品影院一美女洗澡| 亚洲国产免费av一区二区三区 | 久久一区二区三区人妻欧美| 2018在线福利视频| 日日日日日日日日夜夜夜夜夜夜| 天天色天天操天天透| 国产不卡av在线免费| 中文字幕 人妻精品| 国产女孩喷水在线观看| 国产视频一区二区午夜| 97人妻夜夜爽二区欧美极品| 国产又色又刺激在线视频| 亚洲在线免费h观看网站| 欧美一级色视频美日韩| 岛国毛片视频免费在线观看| 日日爽天天干夜夜操| 青青青青青青青青青青草青青| 久久久久久久一区二区三| 日本最新一二三区不卡在线| 91免费放福利在线观看| 久久精品亚洲成在人线a| 手机看片福利盒子日韩在线播放| 中文字幕乱码人妻电影| 日韩av有码一区二区三区4 | 天天干天天爱天天色| 这里只有精品双飞在线播放| 中文字幕视频一区二区在线观看| 欧美在线一二三视频| 福利一二三在线视频观看| 青青青青青青青在线播放视频| 久久久久久久精品老熟妇| 宅男噜噜噜666国产| 男人的网址你懂的亚洲欧洲av| 欧美精品中文字幕久久二区| 国产乱弄免费视频观看| 黄色视频成年人免费观看| 日韩成人性色生活片| 黑人巨大的吊bdsm| 精品乱子伦一区二区三区免费播| 国产男女视频在线播放| 91九色国产porny蝌蚪| 日本一二三区不卡无| 亚洲无线观看国产高清在线| 午夜影院在线观看视频羞羞羞| 国产又粗又硬又猛的毛片视频| 中文人妻AV久久人妻水| 端庄人妻堕落挣扎沉沦| 在线视频这里只有精品自拍| 日本一二三区不卡无| 国产janese在线播放| 青青青国产片免费观看视频| 日韩成人性色生活片| 色婷婷精品大在线观看| 把腿张开让我插进去视频| 日韩熟女av天堂系列| 香港三日本三韩国三欧美三级| 狠狠的往里顶撞h百合| 一区二区三区欧美日韩高清播放| 狠狠的往里顶撞h百合| 岛国毛片视频免费在线观看| 91桃色成人网络在线观看| 亚洲av无乱一区二区三区性色 | 亚洲av黄色在线网站| 欧美少妇性一区二区三区| 在线免费观看黄页视频| www日韩a级s片av| 中文字幕一区二区亚洲一区| 精品91高清在线观看| 黄色大片免费观看网站| 啪啪啪啪啪啪啪啪av| 黄色成人在线中文字幕| 在线观看视频污一区| 又色又爽又黄又刺激av网站| 久久久91蜜桃精品ad| 日本乱人一区二区三区| 欧美国产亚洲中英文字幕| 亚洲第一黄色在线观看| 播放日本一区二区三区电影| 国产精品国产三级国产精东| 久久久精品欧洲亚洲av| 国产一级精品综合av| 一级黄片大鸡巴插入美女| 中文字幕一区二区人妻电影冢本| 91国内视频在线观看| 红杏久久av人妻一区| 热久久只有这里有精品| nagger可以指黑人吗| 国产精品日韩欧美一区二区| 中文字幕在线免费第一页| 自拍偷拍,中文字幕| 自拍偷拍,中文字幕| 国产av一区2区3区| 日韩av中文在线免费观看| av网址在线播放大全| 亚洲 清纯 国产com| jiujiure精品视频在线| 人妻久久无码中文成人| 久久久制服丝袜中文字幕| 中文字幕欧美日韩射射一| 久草视频福利在线首页| 51国产偷自视频在线播放| 亚洲成人黄色一区二区三区| 亚洲欧美日韩视频免费观看| 成人色综合中文字幕| yellow在线播放av啊啊啊| 亚洲中文字字幕乱码| 成人网18免费视频版国产| 久久农村老妇乱69系列| 亚洲 色图 偷拍 欧美| 大香蕉伊人国产在线| 日本中文字幕一二区视频| 99视频精品全部15| 国产伊人免费在线播放| sejizz在线视频| 在线观看的a站 最新| 老有所依在线观看完整版| 亚洲av人人澡人人爽人人爱| 看一级特黄a大片日本片黑人| 久久久极品久久蜜桃| 国产妇女自拍区在线观看 | 91国产在线视频免费观看| 人人妻人人人操人人人爽| 在线国产精品一区二区三区| 日本黄色三级高清视频| 伊人开心婷婷国产av| av天堂中文免费在线| 一级黄片大鸡巴插入美女| 亚洲免费成人a v| 国产aⅴ一线在线观看| 日韩美女综合中文字幕pp| 免费观看污视频网站| 亚洲精品色在线观看视频| 国产又粗又猛又爽又黄的视频美国| 亚洲国产在人线放午夜| 搡老妇人老女人老熟女| 人人妻人人人操人人人爽| 欧美专区第八页一区在线播放 | 经典国语激情内射视频| 亚洲第一伊人天堂网| 中文字幕第一页国产在线| 香蕉aⅴ一区二区三区| 久青青草视频手机在线免费观看| 婷婷综合蜜桃av在线| 国产黄色大片在线免费播放| 夜夜嗨av蜜臀av| 欧美viboss性丰满| 大鸡巴操b视频在线| 岛国av高清在线成人在线| 成人综合亚洲欧美一区 | 亚洲欧美激情国产综合久久久| 国产视频在线视频播放| yellow在线播放av啊啊啊| 色哟哟国产精品入口| 男人的天堂在线黄色| 丰满的子国产在线观看| 91麻豆精品传媒国产黄色片| 亚洲av自拍偷拍综合| 亚洲 中文 自拍 另类 欧美| 馒头大胆亚洲一区二区| 亚洲人妻30pwc| 日本啪啪啪啪啪啪啪| 天天日天天操天天摸天天舔| 国产 在线 免费 精品| nagger可以指黑人吗| 日本后入视频在线观看| 在线免费观看欧美小视频| 91人妻人人做人人爽在线| 久久机热/这里只有| 91试看福利一分钟| 久久久久久九九99精品| 天码人妻一区二区三区在线看| 熟妇一区二区三区高清版| 亚洲国产成人无码麻豆艾秋| 男生用鸡操女生视频动漫| 18禁无翼鸟成人在线| 国产麻豆剧果冻传媒app| 99视频精品全部15| 999热精品视频在线| av无限看熟女人妻另类av | 国产女人露脸高潮对白视频| 宅男噜噜噜666国产| sw137 中文字幕 在线| 日本美女性生活一级片| 国产日韩精品电影7777| 插小穴高清无码中文字幕| 制丝袜业一区二区三区| 欧美亚洲牲夜夜综合久久| 午夜影院在线观看视频羞羞羞| 日本人竟这样玩学生妹| 一区二区三区另类在线| 只有精品亚洲视频在线观看| 中文字幕在线永久免费播放| 视频二区在线视频观看| 一级黄片久久久久久久久| 天天想要天天操天天干| 亚洲国产在人线放午夜| 色哟哟国产精品入口| 99热这里只有精品中文| 日本熟女50视频免费| 亚洲视频在线视频看视频在线| 国产白袜脚足J棉袜在线观看| 日韩特级黄片高清在线看| 老司机在线精品福利视频| 人人在线视频一区二区| 日韩精品激情在线观看| 夜夜嗨av蜜臀av| 国产福利在线视频一区| 久久一区二区三区人妻欧美| 青青青青草手机在线视频免费看| avjpm亚洲伊人久久| 2020国产在线不卡视频| 中国视频一区二区三区| 亚洲一区二区三区久久午夜| 97年大学生大白天操逼| 最新日韩av传媒在线| 人妻久久久精品69系列| 久草视频在线看免费| 亚洲国产欧美一区二区三区久久| 国产chinesehd精品麻豆| 97超碰免费在线视频| 国产无遮挡裸体免费直播视频| 国产一区自拍黄视频免费观看| 亚洲成人午夜电影在线观看| 91在线免费观看成人| 中文字幕国产专区欧美激情| 天天摸天天干天天操科普| 熟女视频一区,二区,三区| 男女第一次视频在线观看| 美洲精品一二三产区区别| 成人亚洲精品国产精品| 日韩无码国产精品强奸乱伦| 成人亚洲国产综合精品| 亚洲人妻av毛片在线| 二区中出在线观看老师| 好吊视频—区二区三区| 硬鸡巴动态操女人逼视频| 午夜毛片不卡免费观看视频| 亚洲人人妻一区二区三区| 天天通天天透天天插| 大陆av手机在线观看| 免费看国产又粗又猛又爽又黄视频| 亚洲国产欧美一区二区三区…| 精品久久久久久高潮| 色偷偷伊人大杳蕉综合网| 欧美一区二区三区高清不卡tv| 自拍偷拍亚洲精品第2页| 中文字幕中文字幕 亚洲国产| 亚洲精品乱码久久久本| 亚洲男人让女人爽的视频| 91免费观看国产免费| 狠狠操狠狠操免费视频| 精品一区二区亚洲欧美| 天天干天天操天天扣| 九一传媒制片厂视频在线免费观看| 国产精品熟女久久久久浪潮| 蜜桃臀av蜜桃臀av| 男人天堂最新地址av| 亚洲一区二区三区精品视频在线| 19一区二区三区在线播放| 中文字幕乱码av资源| 天天色天天操天天透| 高潮喷水在线视频观看| 一区二区三区日韩久久| 国产视频精品资源网站| 91久久国产成人免费网站| 啊啊好慢点插舔我逼啊啊啊视频 | 男人天堂最新地址av| 人人妻人人爽人人澡人人精品| 国产精品自拍视频大全| 国产在线拍揄自揄视频网站| 青青青青操在线观看免费| 亚洲精品 日韩电影| 深夜男人福利在线观看| 青青青青青免费视频| huangse网站在线观看| 韩国亚洲欧美超一级在线播放视频| 搡老熟女一区二区在线观看| 高清一区二区欧美系列| 这里有精品成人国产99| 91九色porny国产蝌蚪视频| a v欧美一区=区三区| 18禁污污污app下载| 午夜精品一区二区三区福利视频| 色爱av一区二区三区| 一区二区视频在线观看免费观看 | 国产一区二区欧美三区| 51国产偷自视频在线播放| 亚洲免费在线视频网站| 抽查舔水白紧大视频| 欧美日韩激情啪啪啪| 看一级特黄a大片日本片黑人| 日本免费视频午夜福利视频| 蜜臀av久久久久蜜臀av麻豆| 免费69视频在线看| 久久农村老妇乱69系列| www日韩毛片av| 99精品亚洲av无码国产另类| 国产之丝袜脚在线一区二区三区| 成人30分钟免费视频| 99热久久这里只有精品| 人妻激情图片视频小说| sw137 中文字幕 在线| 亚洲女人的天堂av| 一区国内二区日韩三区欧美| 亚洲精品三级av在线免费观看| 免费成人av中文字幕| 成年人黄视频在线观看| 国产精品久久久黄网站| 成人30分钟免费视频| 中国老熟女偷拍第一页| 亚洲成人av一区在线| 久久热久久视频在线观看| 在线视频这里只有精品自拍| 日本一区美女福利视频| 久久精品久久精品亚洲人| 2022中文字幕在线| 中国熟女一区二区性xx| 老司机福利精品视频在线| 欧美另类z0z变态| 欧美精品激情在线最新观看视频| xxx日本hd高清| 在线观看免费视频网| 一级黄色片夫妻性生活| 亚洲国产成人最新资源| 秋霞午夜av福利经典影视| 99热99re在线播放| 熟女人妻在线观看视频| 91免费黄片可看视频| 北条麻妃肉色丝袜视频| 国产精品成人xxxx| 性欧美激情久久久久久久| 亚洲国产成人av在线一区| 天天日天天爽天天爽| av欧美网站在线观看| 日韩熟女av天堂系列| 色伦色伦777国产精品| 国产视频一区二区午夜| 亚洲女人的天堂av| 国产亚洲视频在线观看| 日本熟女精品一区二区三区| 免费一级特黄特色大片在线观看| 欧美一区二区三区四区性视频| 在线观看免费岛国av| 天天日天天爽天天爽| 亚洲av男人天堂久久| 久久三久久三久久三久久| 99视频精品全部15| 在线观看国产网站资源| 天天综合天天综合天天网| av欧美网站在线观看| 99热久久这里只有精品8| 深田咏美亚洲一区二区| 91九色porny国产在线| 国产又大又黄免费观看| 日本后入视频在线观看| 一区二区三区另类在线 | 中文字幕中文字幕人妻| 78色精品一区二区三区| 2021久久免费视频| av手机免费在线观看高潮| 熟女视频一区,二区,三区| 大鸡巴后入爆操大屁股美女| 日本在线不卡免费视频| 亚洲精品成人网久久久久久小说| 欧美日韩国产一区二区三区三州| 日本av熟女在线视频| 欧美3p在线观看一区二区三区| 精品一区二区三四区| 中文字幕免费在线免费| 美洲精品一二三产区区别| 国产黄色高清资源在线免费观看| 风流唐伯虎电视剧在线观看 | 天堂资源网av中文字幕| 粉嫩av懂色av蜜臀av| 91极品新人『兔兔』精品新作| 亚洲国产欧美一区二区三区…| 大胸性感美女羞爽操逼毛片| 亚洲蜜臀av一区二区三区九色 | 久久尻中国美女视频| 在线观看av2025| 99热99re在线播放| 五十路熟女av天堂| 欧美另类重口味极品在线观看| 91试看福利一分钟| 午夜场射精嗯嗯啊啊视频| 国产亚洲国产av网站在线| 亚洲av色香蕉一区二区三区| 成人高潮aa毛片免费| 偷拍自拍 中文字幕| 久久久久国产成人精品亚洲午夜| 日韩激情文学在线视频| 天码人妻一区二区三区在线看| av中文字幕在线观看第三页| 成人18禁网站在线播放| 国产视频网站一区二区三区| 亚洲va天堂va国产va久| 亚洲av人人澡人人爽人人爱| 熟女人妻三十路四十路人妻斩| 国产亚洲欧美45p| avjpm亚洲伊人久久| 日韩美av高清在线| 最新国产精品网址在线观看| 欧美性感尤物人妻在线免费看| 91人妻人人做人人爽在线| 男人插女人视频网站| 蜜桃视频在线欧美一区| 视频久久久久久久人妻| 日本少妇在线视频大香蕉在线观看| 在线观看av2025| 1769国产精品视频免费观看| 88成人免费av网站| 日本裸体熟妇区二区欧美| 大香蕉日本伊人中文在线| 亚洲2021av天堂| 在线免费观看靠比视频的网站| 少妇露脸深喉口爆吞精| 亚洲va国产va欧美va在线| 搡老熟女一区二区在线观看| 中文字幕无码日韩专区免费| 摧残蹂躏av一二三区| 91亚洲精品干熟女蜜桃频道| 国产精品人妻一区二区三区网站 | 久久精品国产亚洲精品166m| aⅴ精产国品一二三产品| 美女 午夜 在线视频| 亚洲高清国产拍青青草原| 91超碰青青中文字幕| 777奇米久久精品一区| 在线视频自拍第三页| 老司机在线精品福利视频| 国产成人精品一区在线观看 | 91人妻精品一区二区久久| 摧残蹂躏av一二三区| 国产激情av网站在线观看| 高清成人av一区三区| 久久人人做人人妻人人玩精品vr| 性感美女高潮视频久久久| 国产福利小视频大全| 成人网18免费视频版国产| 国产男女视频在线播放| av乱码一区二区三区| 久久久久国产成人精品亚洲午夜| 国产无遮挡裸体免费直播视频| 日本www中文字幕| 久草视频在线免播放| 日本午夜爽爽爽爽爽视频在线观看| 夜色17s精品人妻熟女| 国产麻豆剧果冻传媒app| 性色蜜臀av一区二区三区| 天天摸天天亲天天舔天天操天天爽| 国产精品成人xxxx| 三级av中文字幕在线观看| 欧美黑人巨大性xxxxx猛交| www天堂在线久久| 欧美在线精品一区二区三区视频| 自拍 日韩 欧美激情| 手机看片福利盒子日韩在线播放| 午夜精品亚洲精品五月色| 亚洲av一妻不如妾| 色吉吉影音天天干天天操| 国产精品日韩欧美一区二区| 国产chinesehd精品麻豆| 国语对白xxxx乱大交| 人妻少妇亚洲精品中文字幕| 成人综合亚洲欧美一区| 在线观看视频 你懂的| 99久久99久国产黄毛片| 欧美精品国产综合久久| 久久精品国产999| 国产三级影院在线观看| 成熟熟女国产精品一区| 动漫精品视频在线观看| 青青色国产视频在线| 国产亚洲精品欧洲在线观看| 欧美精品免费aaaaaa| 久久久精品欧洲亚洲av| 国产精品久久久黄网站| 亚洲高清自偷揄拍自拍| 动色av一区二区三区| 五十路丰满人妻熟妇| 精品av国产一区二区三区四区| 国产精品欧美日韩区二区| av成人在线观看一区| 亚欧在线视频你懂的| 免费成人va在线观看| 亚洲免费va在线播放| 在线免费观看99视频| 人妻少妇亚洲精品中文字幕| 亚洲高清国产拍青青草原| 老司机午夜精品视频资源| 国产免费高清视频视频| 狠狠的往里顶撞h百合| 久久久人妻一区二区| 男生舔女生逼逼的视频| 色哟哟国产精品入口| 亚洲欧美另类自拍偷拍色图| 粉嫩欧美美人妻小视频| 亚洲码av无色中文| 亚洲 国产 成人 在线| 狠狠的往里顶撞h百合| 亚洲va国产va欧美va在线| 九色精品视频在线播放| 男生用鸡操女生视频动漫| 好男人视频在线免费观看网站| 最新中文字幕乱码在线| 日本又色又爽又黄又粗| 在线免费观看视频一二区| 97人妻无码AV碰碰视频| 精品一区二区三区欧美| 亚洲少妇高潮免费观看| av线天堂在线观看| 97资源人妻免费在线视频| 亚洲 国产 成人 在线| 欧美日本aⅴ免费视频| 在线视频国产欧美日韩| 中文字幕一区二区自拍| 国产91久久精品一区二区字幕| 国产福利小视频二区| 国产视频一区在线观看| 成人色综合中文字幕| av天堂中文免费在线| 大陆av手机在线观看| 晚上一个人看操B片| 老师啊太大了啊啊啊尻视频| 久久久超爽一二三av| 1000部国产精品成人观看视频| 91小伙伴中女熟女高潮| 欧美成人综合色在线噜噜| 中文字幕人妻一区二区视频| 狠狠地躁夜夜躁日日躁| 日本丰满熟妇BBXBBXHD| 欧美亚洲一二三区蜜臀| 97超碰国语国产97超碰| 男女啪啪啪啪啪的网站| 欧美va不卡视频在线观看| 一区国内二区日韩三区欧美| 熟女人妻在线观看视频| 中文字幕第1页av一天堂网 | 最新国产亚洲精品中文在线| 日本脱亚入欧是指什么| 国产黄色a级三级三级三级| 亚洲色偷偷综合亚洲AV伊人| 日韩人妻xxxxx| 一区二区三区久久久91| 91高清成人在线视频| 国产极品精品免费视频| 日韩一区二区电国产精品| 黄色的网站在线免费看| 91福利在线视频免费观看| 91国内精品自线在拍白富美| 国产精品久久久久国产三级试频| 日韩熟女av天堂系列| av视网站在线观看| 人人爱人人妻人人澡39| 亚洲中文字幕人妻一区| 天天干狠狠干天天操| 东京热男人的av天堂| 99久久激情婷婷综合五月天| 18禁无翼鸟成人在线| 丰满少妇翘臀后进式| 少妇与子乱在线观看| 中文字幕熟女人妻久久久| 最新的中文字幕 亚洲| 人妻少妇亚洲精品中文字幕| 人妻久久久精品69系列| 精品一区二区三区在线观看| 青青青青视频在线播放| 青春草视频在线免费播放| 欧美日韩人妻久久精品高清国产| 婷婷色国产黑丝少妇勾搭AV| 2022国产综合在线干| 十八禁在线观看地址免费| 直接能看的国产av| chinese国产盗摄一区二区| 美女张开腿让男生操在线看| 国产精品成人xxxx| 青青草在观免费国产精品| 中文字幕人妻av在线观看| 欧美伊人久久大香线蕉综合| 夜夜嗨av一区二区三区中文字幕| 中文字幕+中文字幕| 久久久久久国产精品| 在线新三级黄伊人网| 99久久99一区二区三区| 2o22av在线视频| 欧美中文字幕一区最新网址| 黑人巨大精品欧美视频| 最新97国产在线视频| 人妻另类专区欧美制服| 欧美第一页在线免费观看视频| 青青青青青青青青青国产精品视频| 国产极品精品免费视频| 超碰在线中文字幕一区二区| 大香蕉大香蕉大香蕉大香蕉大香蕉| 成人资源在线观看免费官网| 馒头大胆亚洲一区二区| 亚洲国产成人无码麻豆艾秋| 欧亚日韩一区二区三区观看视频| 姐姐的朋友2在线观看中文字幕| 美女大bxxxx内射| 国产成人精品福利短视频| 色吉吉影音天天干天天操| 午夜美女少妇福利视频| 久草福利电影在线观看| 中文人妻AV久久人妻水| 中文字幕高清免费在线人妻| 99国产精品窥熟女精品| 日韩欧美国产精品91| 国产午夜男女爽爽爽爽爽视频 | 日本少妇的秘密免费视频| 亚洲av在线观看尤物| 精品少妇一二三视频在线| 天天日天天日天天射天天干| 亚洲丝袜老师诱惑在线观看| 中文字幕乱码人妻电影| 人妻无码中文字幕专区| 超黄超污网站在线观看| 久久精品视频一区二区三区四区| 白嫩白嫩美女极品国产在线观看| 绝色少妇高潮3在线观看| 最新激情中文字幕视频| 亚洲av男人天堂久久| 中国黄色av一级片| 日本啪啪啪啪啪啪啪| 91桃色成人网络在线观看| 97精品成人一区二区三区| 美女大bxxxx内射| 91桃色成人网络在线观看| 97色视频在线观看| 国际av大片在线免费观看| 亚洲精品中文字幕下载| 中国熟女一区二区性xx| 亚洲国产最大av综合| 夜色撩人久久7777| 天天操天天干天天艹| 国产97在线视频观看| 77久久久久国产精产品| 成人av在线资源网站| 精品视频国产在线观看| 亚洲精品中文字幕下载| 亚洲av可乐操首页| 亚洲欧美综合另类13p| 日韩欧美在线观看不卡一区二区| 日本一道二三区视频久久| 亚洲欧美一区二区三区电影| av中文字幕在线观看第三页 | 亚洲福利精品福利精品福利| 把腿张开让我插进去视频| 不戴胸罩引我诱的隔壁的人妻| 久久久久久久亚洲午夜综合福利| 大香蕉大香蕉在线看| 边摸边做超爽毛片18禁色戒| 欧美视频中文一区二区三区| 日本一区二区三区免费小视频| 精品av国产一区二区三区四区| 三上悠亚和黑人665番号| 国产精品一区二区av国| 自拍偷拍 国产资源| 人人妻人人澡欧美91精品| 免费费一级特黄真人片| 精品国产午夜视频一区二区| 国产又色又刺激在线视频| 无码精品一区二区三区人| 91破解版永久免费| 亚洲成a人片777777| 97超碰人人搞人人| 日韩欧美高清免费在线| 无码日韩人妻精品久久| 午夜精品亚洲精品五月色| 亚洲精品无码久久久久不卡| 亚洲蜜臀av一区二区三区九色| 天天日天天摸天天爱| 久久久久久久久久久免费女人| 久草视频中文字幕在线观看| 免费十精品十国产网站| 日韩美女综合中文字幕pp| 91人妻精品久久久久久久网站| 玩弄人妻熟妇性色av少妇| 日韩欧美在线观看不卡一区二区 | 2022中文字幕在线| 久久永久免费精品人妻专区 | 黄色无码鸡吧操逼视频| av久久精品北条麻妃av观看| 春色激情网欧美成人| 成人国产影院在线观看| 天堂女人av一区二区| 亚洲av自拍天堂网| 人妻最新视频在线免费观看| 最后99天全集在线观看| 中文乱理伦片在线观看| 狠狠地躁夜夜躁日日躁| 伊人成人综合开心网| 深夜男人福利在线观看| 久久久久只精品国产三级| 小穴多水久久精品免费看| av黄色成人在线观看| 97超碰国语国产97超碰| 国产97视频在线精品| 欧美性受xx黑人性猛交| 国产精品国产三级国产精东| 国产又粗又猛又爽又黄的视频在线| 亚洲 清纯 国产com| 99热99re在线播放| 国产精品女邻居小骚货| 美味人妻2在线播放| 阴茎插到阴道里面的视频|