From 26142f9a71a0eb7c9908197b7b961253736e9133 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Mon, 12 May 2025 13:52:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E5=8A=A8=E5=88=B7?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-menu)/user/list/components/create-user-editor.tsx | 6 ++++-- tone-page-web/app/console/(with-menu)/user/list/page.tsx | 4 ++-- tone-page-web/hooks/admin/user/use-user-list.ts | 6 ++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tone-page-web/app/console/(with-menu)/user/list/components/create-user-editor.tsx b/tone-page-web/app/console/(with-menu)/user/list/components/create-user-editor.tsx index b7533a6..f4a7d7d 100644 --- a/tone-page-web/app/console/(with-menu)/user/list/components/create-user-editor.tsx +++ b/tone-page-web/app/console/(with-menu)/user/list/components/create-user-editor.tsx @@ -17,10 +17,11 @@ import { toast } from "sonner"; import { ApiError } from "next/dist/server/api-utils"; interface CreateUserEditorProps { - children: React.ReactNode + children: React.ReactNode; + onRefresh: () => void; } -export function CreateUserEditor({ children }: CreateUserEditorProps) { +export function CreateUserEditor({ children, onRefresh }: CreateUserEditorProps) { const [open, setOpen] = useState(false); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); @@ -35,6 +36,7 @@ export function CreateUserEditor({ children }: CreateUserEditorProps) { }); setOpen(false); toast.success('创建成功') + onRefresh(); } catch (error) { toast.error((error as ApiError).message || '创建失败') } diff --git a/tone-page-web/app/console/(with-menu)/user/list/page.tsx b/tone-page-web/app/console/(with-menu)/user/list/page.tsx index 73abcb3..0ff7658 100644 --- a/tone-page-web/app/console/(with-menu)/user/list/page.tsx +++ b/tone-page-web/app/console/(with-menu)/user/list/page.tsx @@ -11,7 +11,7 @@ import { CreateUserEditor } from "./components/create-user-editor"; export default function Page() { - const { users, isLoading, error, total, page, pageSize, mutate } = useUserList(); + const { users, isLoading, error, total, page, pageSize, mutate, refresh } = useUserList(); const [editorUserId, setEditorUserId] = useState(""); const handleUserUpdate = async (newUser: User) => { @@ -49,7 +49,7 @@ export default function Page() { return ( <>
- + refresh()}>
diff --git a/tone-page-web/hooks/admin/user/use-user-list.ts b/tone-page-web/hooks/admin/user/use-user-list.ts index 86a6834..c7d00c3 100644 --- a/tone-page-web/hooks/admin/user/use-user-list.ts +++ b/tone-page-web/hooks/admin/user/use-user-list.ts @@ -2,6 +2,7 @@ import { list, UserListParams, UserListResponse } from '@/lib/api/admin/user' import { ApiError } from '@/lib/api/fetcher' +import { useCallback } from 'react' import { toast } from 'sonner' import useSWR from 'swr' @@ -11,6 +12,10 @@ export function useUserList(params?: UserListParams) { () => list(params), ) + const refresh = useCallback(() => { + return mutate() + }, [mutate]) + return { users: data?.items ?? [], total: data?.total ?? 0, @@ -19,5 +24,6 @@ export function useUserList(params?: UserListParams) { isLoading, error, mutate, + refresh, } } \ No newline at end of file