From 315af5bd0b2d2c01ab240635a4b8396e4e76cfb8 Mon Sep 17 00:00:00 2001 From: cozy-ito Date: Thu, 15 May 2025 12:22:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EC=83=81=EC=84=B8=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=8F=99=20?= =?UTF-8?q?=EC=8B=9C=EC=97=90=EB=8F=84=20=EC=9C=A0=EC=A7=80=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Alert/Alert.tsx | 1 - .../Dropdown/FilterDropdownContent.tsx | 27 ++++++++++--------- src/components/NoticeSearchResultHeader.tsx | 21 ++++++++++++--- src/store/useFilterStore.ts | 16 +++++++++++ 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/components/Alert/Alert.tsx b/src/components/Alert/Alert.tsx index 7d8f921..61f3ebf 100644 --- a/src/components/Alert/Alert.tsx +++ b/src/components/Alert/Alert.tsx @@ -68,7 +68,6 @@ function Alert({ userId }: AlertProps) { ) : ( )} - {/* */} {showDropdown && (
(selectedAreas); @@ -66,9 +62,12 @@ function FilterDropdownContent({ }; const applyButtonHandler = () => { - setMinPay(payFilter); - setStartDate(startDateFilter); - setAreas(areasFilter); + setFilters({ + selectedAreas: areasFilter, + startDate: startDateFilter, + minPay: payFilter, + pathname, + }); onClickApplyButton(); }; @@ -78,6 +77,10 @@ function FilterDropdownContent({ setStartDateFilter(null); setAreasFilter([]); refetch(); + setSearchParams((prev) => { + prev.set("page", "1"); + return prev; + }); }; return ( diff --git a/src/components/NoticeSearchResultHeader.tsx b/src/components/NoticeSearchResultHeader.tsx index 4dc08bf..818eaf2 100644 --- a/src/components/NoticeSearchResultHeader.tsx +++ b/src/components/NoticeSearchResultHeader.tsx @@ -1,6 +1,6 @@ -import { useMemo, useRef, useState } from "react"; +import { useEffect, useMemo, useRef, useState } from "react"; -import { useSearchParams } from "react-router-dom"; +import { useLocation, useSearchParams } from "react-router-dom"; import Button from "@/components/Button"; import FilterDropdownContent from "@/components/Dropdown/FilterDropdownContent"; @@ -26,9 +26,17 @@ export default function NoticeSearchResultHeader({ onChangeSort, refetch, }: TotalNoticeSectionProps) { + const { pathname } = useLocation(); + const [, setSearchParams] = useSearchParams(); const [showFilter, setShowFilter] = useState(false); - const { minPay, selectedAreas, startDate } = useFilterStore(); + const { + pathname: filterPathname, + minPay, + selectedAreas, + startDate, + reset, + } = useFilterStore(); const buttonRef = useRef(null); const wrapperRef = useRef(null); @@ -68,6 +76,13 @@ export default function NoticeSearchResultHeader({ setShowFilter(false); }; + useEffect(() => { + console.log(pathname, filterPathname); + if (pathname !== filterPathname) { + reset(); + } + }, [pathname, filterPathname, reset]); + return (
diff --git a/src/store/useFilterStore.ts b/src/store/useFilterStore.ts index 18fd669..8d6cd5d 100644 --- a/src/store/useFilterStore.ts +++ b/src/store/useFilterStore.ts @@ -7,11 +7,19 @@ interface FilterState { selectedAreas: string[]; startDate: Date | null; minPay: string | null; + pathname: string | null; getFilters: () => { address?: string[] | null; hourlyPayGte?: number; startsAtGte?: string; + pathname?: string; }; + setFilters: (filters: { + selectedAreas?: string[]; + startDate?: Date | null; + minPay?: string | null; + pathname?: string; + }) => void; setAreas: (areas: string[]) => void; setStartDate: (date: Date | null) => void; setMinPay: (pay: string | null) => void; @@ -22,6 +30,7 @@ export const useFilterStore = create((set, get) => ({ selectedAreas: [], startDate: null, minPay: null, + pathname: null, getFilters: () => { const { selectedAreas, startDate, minPay } = get(); @@ -43,11 +52,18 @@ export const useFilterStore = create((set, get) => ({ setAreas: (areas) => set({ selectedAreas: areas }), setStartDate: (date) => set({ startDate: date }), setMinPay: (pay) => set({ minPay: pay }), + setFilters: (nextFilters) => { + set((filters) => ({ + ...filters, + ...nextFilters, + })); + }, reset: () => set({ selectedAreas: [], startDate: null, minPay: null, + pathname: null, }), })); From a550fd7f852aabef8438c914ab05d258bebf9a64 Mon Sep 17 00:00:00 2001 From: cozy-ito Date: Sat, 17 May 2025 11:14:51 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20console.log=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/NoticeSearchResultHeader.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/NoticeSearchResultHeader.tsx b/src/components/NoticeSearchResultHeader.tsx index 818eaf2..fa2a856 100644 --- a/src/components/NoticeSearchResultHeader.tsx +++ b/src/components/NoticeSearchResultHeader.tsx @@ -77,7 +77,6 @@ export default function NoticeSearchResultHeader({ }; useEffect(() => { - console.log(pathname, filterPathname); if (pathname !== filterPathname) { reset(); }