"use client" import { useState, useEffect } from "react" import Link from "next/link" import { usePathname } from "next/navigation" import { Home, List, User, Users } from "lucide-react" export function BottomNav() { const pathname = usePathname() const [matchEnabled, setMatchEnabled] = useState(false) // 默认隐藏,等配置加载后再显示 const [configLoaded, setConfigLoaded] = useState(false) // 配置是否已加载 // 加载功能配置(必须在所有条件判断之前) useEffect(() => { const loadConfig = async () => { try { const res = await fetch('/api/db/config') const data = await res.json() if (data.features) { // 根据配置设置是否显示找伙伴按钮 setMatchEnabled(data.features.matchEnabled === true) } } catch (e) { console.log('Load feature config error:', e) // 加载失败时,默认不显示找伙伴按钮 setMatchEnabled(false) } finally { setConfigLoaded(true) } } loadConfig() }, []) // 在文档页面、管理后台、阅读页面和关于页面不显示底部导航(必须在所有 hooks 之后) if ( pathname?.startsWith("/view/documentation") || pathname?.startsWith("/admin") || pathname?.startsWith("/view/read") || pathname?.startsWith("/view/about") ) { return null } const navItems = [ { href: "/view", icon: Home, label: "首页" }, { href: "/view/chapters", icon: List, label: "目录" }, ...(matchEnabled ? [{ href: "/view/match", icon: Users, label: "找伙伴", isCenter: true }] : []), { href: "/view/my", icon: User, label: "我的" }, ] return ( <> ) }