diff --git a/src/routes/alert-rule.tsx b/src/routes/alert-rule.tsx index 76f60e3..d438883 100644 --- a/src/routes/alert-rule.tsx +++ b/src/routes/alert-rule.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -120,8 +120,12 @@ export default function AlertRulePage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/cron.tsx b/src/routes/cron.tsx index f8d4e1d..1fdabe0 100644 --- a/src/routes/cron.tsx +++ b/src/routes/cron.tsx @@ -11,7 +11,7 @@ import { import { ModelCron } from "@/types"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -177,8 +177,12 @@ export default function CronPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/ddns.tsx b/src/routes/ddns.tsx index 061de29..85ba505 100644 --- a/src/routes/ddns.tsx +++ b/src/routes/ddns.tsx @@ -12,7 +12,7 @@ import { import { ModelDDNSProfile } from "@/types"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect, useState } from "react"; +import { useEffect, useState, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -120,8 +120,12 @@ export default function DDNSPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/nat.tsx b/src/routes/nat.tsx index d4d0efc..6a4b9f1 100644 --- a/src/routes/nat.tsx +++ b/src/routes/nat.tsx @@ -12,7 +12,7 @@ import { import { ModelNAT } from "@/types"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -105,8 +105,12 @@ export default function NATPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/notification-group.tsx b/src/routes/notification-group.tsx index 60ea1bc..303f80b 100644 --- a/src/routes/notification-group.tsx +++ b/src/routes/notification-group.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -95,8 +95,12 @@ export default function NotificationGroupPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/notification.tsx b/src/routes/notification.tsx index fedb437..d882ebb 100644 --- a/src/routes/notification.tsx +++ b/src/routes/notification.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -117,8 +117,12 @@ export default function NotificationPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/server-group.tsx b/src/routes/server-group.tsx index 079c6be..cad9421 100644 --- a/src/routes/server-group.tsx +++ b/src/routes/server-group.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -95,8 +95,12 @@ export default function ServerGroupPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/server.tsx b/src/routes/server.tsx index d071887..4792ed6 100644 --- a/src/routes/server.tsx +++ b/src/routes/server.tsx @@ -15,7 +15,7 @@ import { HeaderButtonGroup } from "@/components/header-button-group"; import { deleteServer, forceUpdateServer } from "@/api/server"; import { ServerCard } from "@/components/server"; import { ActionButtonGroup } from "@/components/action-button-group"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { toast } from "sonner"; import { IconButton } from "@/components/xui/icon-button"; import { InstallCommandsMenu } from "@/components/install-commands"; @@ -137,8 +137,12 @@ export default function ServerPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/user.tsx b/src/routes/user.tsx index 51ab0f1..574cd44 100644 --- a/src/routes/user.tsx +++ b/src/routes/user.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -83,8 +83,12 @@ export default function UserPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), }); diff --git a/src/routes/waf.tsx b/src/routes/waf.tsx index 4318f2b..2f50893 100644 --- a/src/routes/waf.tsx +++ b/src/routes/waf.tsx @@ -10,7 +10,7 @@ import { } from "@/components/ui/table"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import useSWR from "swr"; -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { ActionButtonGroup } from "@/components/action-button-group"; import { HeaderButtonGroup } from "@/components/header-button-group"; import { toast } from "sonner"; @@ -99,8 +99,12 @@ export default function WAFPage() { }, ]; + const dataCache = useMemo(() => { + return data ?? []; + }, [data]); + const table = useReactTable({ - data: data ?? [], + data: dataCache, columns, getCoreRowModel: getCoreRowModel(), });