'use client'; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { TooltipContent, TooltipProvider, TooltipTrigger, Tooltip } from "@/components/ui/tooltip"; import { useUserList } from "@/hooks/admin/user/use-user-list"; import { useState } from "react"; import { UserInfoEditor } from "./components/user-info-editor"; import { User } from "@/lib/types/user"; import { CreateUserEditor } from "./components/create-user-editor"; export default function Page() { const { users, isLoading, error, total, page, pageSize, mutate, refresh } = useUserList(); const [editorUserId, setEditorUserId] = useState(""); const handleUserUpdate = async (newUser: User) => { await mutate( (data) => { if (!data) return data; return { ...data, items: data.items.map((user) => user.userId === newUser.userId ? newUser : user ), }; }, { revalidate: false, } ) } const handleUserDelete = async (userId: string) => { await mutate( (data) => { if (!data) return data; return { ...data, items: data.items.filter((user) => user.userId !== userId), }; }, { revalidate: false, } ) } return ( <>
refresh()}>
{error && {error.message}} userId 账户 昵称 邮箱 手机号 操作 { users.map((user) => (
{user.userId}

{user.userId}

{user.username} {user.nickname} {user.email} {user.phone}
)) } {isLoading && ( { Array.from({ length: 6 }).map((_, index) => ( )) } )}
setEditorUserId('')} userId={editorUserId} onUserUpdate={handleUserUpdate} onUserDelete={handleUserDelete} /> ) }