aad
This commit is contained in:
parent
b947ac2e43
commit
c6a40da7c2
|
@ -6,6 +6,7 @@ import React, {
|
||||||
useMemo,
|
useMemo,
|
||||||
useState,
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
import { useDebounce } from "use-debounce";
|
||||||
interface SelectedTerms {
|
interface SelectedTerms {
|
||||||
[key: string]: string[]; // 每个 slug 对应一个 string 数组
|
[key: string]: string[]; // 每个 slug 对应一个 string 数组
|
||||||
}
|
}
|
||||||
|
@ -35,7 +36,8 @@ export function MainProvider({ children }: MainProviderProps) {
|
||||||
PostType.COURSE | PostType.PATH | "both"
|
PostType.COURSE | PostType.PATH | "both"
|
||||||
>("both");
|
>("both");
|
||||||
const [showSearchMode, setShowSearchMode] = useState<boolean>(false);
|
const [showSearchMode, setShowSearchMode] = useState<boolean>(false);
|
||||||
const [searchValue, setSearchValue] = useState("");
|
const [searchValue, setSearchValue] = useState<string>("");
|
||||||
|
const [debouncedValue] = useDebounce<string>(searchValue, 500);
|
||||||
const [selectedTerms, setSelectedTerms] = useState<SelectedTerms>({}); // 初始化状态
|
const [selectedTerms, setSelectedTerms] = useState<SelectedTerms>({}); // 初始化状态
|
||||||
const termFilters = useMemo(() => {
|
const termFilters = useMemo(() => {
|
||||||
return Object.entries(selectedTerms)
|
return Object.entries(selectedTerms)
|
||||||
|
@ -60,10 +62,10 @@ export function MainProvider({ children }: MainProviderProps) {
|
||||||
}, [termFilters]);
|
}, [termFilters]);
|
||||||
const searchCondition: Prisma.PostWhereInput = useMemo(() => {
|
const searchCondition: Prisma.PostWhereInput = useMemo(() => {
|
||||||
const containTextCondition: Prisma.StringNullableFilter = {
|
const containTextCondition: Prisma.StringNullableFilter = {
|
||||||
contains: searchValue,
|
contains: debouncedValue,
|
||||||
mode: "insensitive" as Prisma.QueryMode, // 使用类型断言
|
mode: "insensitive" as Prisma.QueryMode, // 使用类型断言
|
||||||
};
|
};
|
||||||
return searchValue
|
return debouncedValue
|
||||||
? {
|
? {
|
||||||
OR: [
|
OR: [
|
||||||
{ title: containTextCondition },
|
{ title: containTextCondition },
|
||||||
|
@ -79,7 +81,7 @@ export function MainProvider({ children }: MainProviderProps) {
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
: {};
|
: {};
|
||||||
}, [searchValue]);
|
}, [searchValue, debouncedValue]);
|
||||||
return (
|
return (
|
||||||
<MainContext.Provider
|
<MainContext.Provider
|
||||||
value={{
|
value={{
|
||||||
|
|
Loading…
Reference in New Issue