// src/layouts/MainLayout.js // 主布局组件 - 为所有带导航栏的页面提供统一布局 import React, { Suspense } from "react"; import { Outlet } from "react-router-dom"; import { Box } from '@chakra-ui/react'; import HomeNavbar from "../components/Navbars/HomeNavbar"; import PageLoader from "../components/Loading/PageLoader"; /** * MainLayout - 带导航栏的主布局 * * 使用 渲染子路由,确保导航栏只渲染一次 * 页面切换时只有 Outlet 内的内容会更新,导航栏保持不变 * Suspense 边界确保导航栏始终可见,只有内容区域显示 loading */ export default function MainLayout() { return ( {/* 导航栏 - 在所有页面间共享,不会重新渲染 */} {/* 页面内容区域 - 通过 Outlet 渲染当前路由对应的组件 */} {/* Suspense 只包裹内容区域,导航栏保持可见 */} }> ); }