import { useEffect, useState } from "react"; import './Test.css' export default function Test(){ const [hash, setHash] = useState(() => window.location.hash); useEffect(() => { const handleHashChange = () => { setHash(window.location.hash); }; window.addEventListener("hashchange", handleHashChange); return () => { window.removeEventListener("hashchange", handleHashChange); }; }, []); const showOptionPanel = hash === "#option"; function openOptionPanel() { window.location.hash = "option"; } function closeOptionPanel() { // 去掉 #option,但不刷新页面 window.history.pushState( "", document.title, window.location.pathname + window.location.search ); // pushState 不会自动触发 hashchange,所以这里手动同步状态 setHash(""); } return (
{showOptionPanel && (

设置面板

)}
); }