From c6a40da7c2e0a04f55539cc9dff9b46efd6116ed Mon Sep 17 00:00:00 2001 From: ditiqi Date: Fri, 28 Feb 2025 15:45:21 +0800 Subject: [PATCH] aad --- apps/web/src/app/main/layout/MainProvider.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/web/src/app/main/layout/MainProvider.tsx b/apps/web/src/app/main/layout/MainProvider.tsx index d928e9d..73db96a 100755 --- a/apps/web/src/app/main/layout/MainProvider.tsx +++ b/apps/web/src/app/main/layout/MainProvider.tsx @@ -6,6 +6,7 @@ import React, { useMemo, useState, } from "react"; +import { useDebounce } from "use-debounce"; interface SelectedTerms { [key: string]: string[]; // 每个 slug 对应一个 string 数组 } @@ -35,7 +36,8 @@ export function MainProvider({ children }: MainProviderProps) { PostType.COURSE | PostType.PATH | "both" >("both"); const [showSearchMode, setShowSearchMode] = useState(false); - const [searchValue, setSearchValue] = useState(""); + const [searchValue, setSearchValue] = useState(""); + const [debouncedValue] = useDebounce(searchValue, 500); const [selectedTerms, setSelectedTerms] = useState({}); // 初始化状态 const termFilters = useMemo(() => { return Object.entries(selectedTerms) @@ -60,10 +62,10 @@ export function MainProvider({ children }: MainProviderProps) { }, [termFilters]); const searchCondition: Prisma.PostWhereInput = useMemo(() => { const containTextCondition: Prisma.StringNullableFilter = { - contains: searchValue, + contains: debouncedValue, mode: "insensitive" as Prisma.QueryMode, // 使用类型断言 }; - return searchValue + return debouncedValue ? { OR: [ { title: containTextCondition }, @@ -79,7 +81,7 @@ export function MainProvider({ children }: MainProviderProps) { ], } : {}; - }, [searchValue]); + }, [searchValue, debouncedValue]); return (