fix(frontend): support static export dynamic routes compliance via client useParams

This commit is contained in:
ryan
2026-07-12 18:07:43 +08:00
parent fc569d1758
commit 50717d1baf
3 changed files with 29 additions and 21 deletions
@@ -1,7 +1,7 @@
'use client';
import {usePathname, useRouter, useSearchParams} from 'next/navigation';
import {useCallback, useMemo, useState} from 'react';
import {useParams, usePathname, useRouter, useSearchParams} from 'next/navigation';
import {useCallback, useEffect, useMemo, useState} from 'react';
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query';
import {ArrowLeft, Globe, Pencil, Trash2} from 'lucide-react';
import {toast} from 'sonner';
@@ -40,7 +40,14 @@ function getZonePageTab(value: string | null | undefined): ZonePageTab {
return zoneTabs.includes(value as ZonePageTab) ? (value as ZonePageTab) : 'overview';
}
export function ZonePageClient({zoneId}: {zoneId: number}) {
export function ZonePageClient() {
const params = useParams();
const zoneId = Number(params?.zoneId);
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
const router = useRouter();
const pathname = usePathname();
@@ -96,7 +103,13 @@ export function ZonePageClient({zoneId}: {zoneId: number}) {
onError: (error) => toast.error(getErrorMessage(error)),
});
if (!mounted) {
return (
<div className="py-6 px-1">
<LoadingStateWithBorder icon={Globe} description="加载 Zone 详情中..." />
</div>
);
}
if (!Number.isInteger(zoneId) || zoneId <= 0) {
return (