新增自动刷新

This commit is contained in:
2025-05-12 13:52:38 +08:00
parent 11d503ab49
commit 26142f9a71
3 changed files with 12 additions and 4 deletions

View File

@@ -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<HTMLFormElement>) => {
event.preventDefault();
@@ -35,6 +36,7 @@ export function CreateUserEditor({ children }: CreateUserEditorProps) {
});
setOpen(false);
toast.success('创建成功')
onRefresh();
} catch (error) {
toast.error((error as ApiError).message || '创建失败')
}

View File

@@ -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 (
<>
<div>
<CreateUserEditor >
<CreateUserEditor onRefresh={() => refresh()}>
<Button ></Button>
</CreateUserEditor>
</div>

View File

@@ -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,
}
}