From 53faa775bea24c5d843ddcf74a2188843246c714 Mon Sep 17 00:00:00 2001 From: hypercross Date: Thu, 26 Feb 2026 15:10:03 +0800 Subject: [PATCH] fix: heading --- src/components/Sidebar.tsx | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 72026cc..80d8f0c 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -1,4 +1,4 @@ -import { Component, createSignal, onMount, Show } from "solid-js"; +import { Component, createMemo, createSignal, onMount, Show } from "solid-js"; import { generateToc, type FileNode, type TocNode } from "../data-loader"; import { useLocation } from "@solidjs/router"; import { FileTreeNode, HeadingNode } from "./FileTree"; @@ -17,25 +17,18 @@ export const Sidebar: Component = (props) => { const [pathHeadings, setPathHeadings] = createSignal< Record >({}); - const [currentFileHeadings, setCurrentFileHeadings] = createSignal( - [], - ); + // 加载目录数据 onMount(async () => { const toc = await generateToc(); setFileTree(toc.fileTree); setPathHeadings(toc.pathHeadings); }); - // 根据当前路径更新当前文件的标题列表 - onMount(() => { - const updateHeadings = () => { - const pathname = location.pathname; - const headings = - pathHeadings()[pathname] || pathHeadings()[`${pathname}.md`]; - setCurrentFileHeadings(headings || []); - }; - updateHeadings(); + // 响应式获取当前文件的标题列表 + const currentFileHeadings = createMemo(() => { + const pathname = location.pathname; + return pathHeadings()[pathname] || pathHeadings()[`${pathname}.md`] || []; }); return (