임동욱 임동욱 09-22
fix: 검색 초기화가 검색 상자에 입력 중인 값까지 비우게 한다
주소만 되돌리면 적용 전 입력값(초안)이 목록 컨테이너 안에 남았다. 초기화 때 컨테이너를
다시 마운트(key)해 검색어·검색 대상 초안까지 비운다 — 학생·관리자 회원, 가맹몰 상세 목록.

Co-Authored-By: Claude Opus 5 
@c3b40a9d298f0be79d001ae33bc8dcc61ad78781
app/(protected)/(basic)/admins/_components/admin-member-list.tsx
--- app/(protected)/(basic)/admins/_components/admin-member-list.tsx
+++ app/(protected)/(basic)/admins/_components/admin-member-list.tsx
@@ -63,6 +63,14 @@
     router.replace(buildAdminMemberHref(query, { ...patch, page: 1 }));
   }
 
+  // 검색 초기화 — 주소를 되돌리는 것만으론 아직 적용 안 한 입력값이 남는다. 목록 컨테이너를
+  // 다시 마운트해 검색 상자의 초안까지 비운다.
+  const [resetCount, setResetCount] = useState(0);
+  function resetSearch() {
+    setResetCount((count) => count + 1);
+    router.replace(ADMIN_MEMBERS_PATH);
+  }
+
   const columns: FoxListColumn<AdminMember>[] = [
     {
       key: 'no',
@@ -136,6 +144,7 @@
   return (
     <>
       <FoxListContainer<AdminMember>
+        key={resetCount}
         title="관리자 회원 목록"
         breadcrumb={[
           { label: '홈', href: '/' },
@@ -183,13 +192,7 @@
         keyword={query.keyword}
         toolbarActions={
           <FoxButtonGroup size="md">
-            {/* 검색어·검색 대상·정렬·페이지 크기·페이지를 모두 기본값으로 — URL이 상태라 주소만 되돌린다. */}
-            <FoxButton
-              type="default"
-              size="md"
-              label="검색 초기화"
-              onAction={() => router.replace(ADMIN_MEMBERS_PATH)}
-            />
+            <FoxButton type="default" size="md" label="검색 초기화" onAction={resetSearch} />
             <form action={ADMIN_MEMBERS_EXCEL_PATH} method="get">
               <FoxButton
                 type="secondary"
app/(protected)/(basic)/students/_components/student-list.tsx
--- app/(protected)/(basic)/students/_components/student-list.tsx
+++ app/(protected)/(basic)/students/_components/student-list.tsx
@@ -81,6 +81,14 @@
     router.replace(buildStudentMemberHref(query, { ...patch, page: 1 }));
   }
 
+  // 검색 초기화 — 주소를 되돌리는 것만으론 아직 적용 안 한 입력값이 남는다. 목록 컨테이너를
+  // 다시 마운트해 검색 상자의 초안까지 비운다.
+  const [resetCount, setResetCount] = useState(0);
+  function resetSearch() {
+    setResetCount((count) => count + 1);
+    router.replace(STUDENT_MEMBERS_PATH);
+  }
+
   const columns: FoxListColumn<StudentMember>[] = [
     {
       key: 'no',
@@ -159,6 +167,7 @@
   return (
     <>
       <FoxListContainer<StudentMember>
+      key={resetCount}
       title="학생 회원 목록"
       breadcrumb={[
         { label: '홈', href: '/' },
@@ -206,13 +215,7 @@
       keyword={query.keyword}
       toolbarActions={
         <FoxButtonGroup size="md">
-          {/* 검색어·검색 대상·정렬·페이지 크기·페이지를 모두 기본값으로 — URL이 상태라 주소만 되돌린다. */}
-          <FoxButton
-            type="default"
-            size="md"
-            label="검색 초기화"
-            onAction={() => router.replace(STUDENT_MEMBERS_PATH)}
-          />
+          <FoxButton type="default" size="md" label="검색 초기화" onAction={resetSearch} />
           {/* 네이티브 GET 폼이라야 한다 — 응답이 첨부파일(Content-Disposition)이라 라우터
               내비게이션으로는 처리할 수 없고, 브라우저가 화면을 둔 채 파일만 내려받는다.
               검색·페이징 값을 싣지 않는 것이 사양이다(파일은 항상 전체 데이터). */}
app/(protected)/(basic)/system/merchant-details/_components/merchant-detail-list.tsx
--- app/(protected)/(basic)/system/merchant-details/_components/merchant-detail-list.tsx
+++ app/(protected)/(basic)/system/merchant-details/_components/merchant-detail-list.tsx
@@ -98,9 +98,13 @@
     setSelectedIds(checked ? new Set(allIds) : new Set());
   }
 
-  /** 모든 필터를 비우고 첫 페이지로 — 초안과 URL을 함께 되돌린다. */
+  // 검색 상자의 초안은 목록 컨테이너 안에 있어 다시 마운트해야 비워진다.
+  const [resetCount, setResetCount] = useState(0);
+
+  /** 모든 필터를 비우고 첫 페이지로 — 초안·검색 상자·URL을 함께 되돌린다. */
   function resetFilters() {
     setDraft({ category: FILTER_ALL, visibility: FILTER_ALL, startDate: '', endDate: '' });
+    setResetCount((count) => count + 1);
     router.replace(MERCHANT_DETAILS_PATH);
   }
 
@@ -264,6 +268,7 @@
 
   return (
     <FoxListContainer<MerchantDetailSummary>
+      key={resetCount}
       title="가맹몰 상세 관리"
       description="지역상생몰(바우처 사용처)에 노출되는 업체를 등록·관리한다"
       breadcrumb={[
Add a comment
List