fix: 知识图谱与思维导图不显示内容
三个独立 bug 修复: 1. MindmapTree StrictMode 双重渲染: Effect 1 创建 mm 实例, Effect 2 设置数据, StrictMode 下 Effect 1 重建 mm 但 Effect 2 不重新运行 → 新 mm 无数据 修复: 在 Effect 1 中用 useStore.getState().tree 设置初始数据 2. LinkGraph onSwitchToEditor 不稳定: App 传内联箭头函数每次渲染新引用, 导致 D3 力导向图 Effect 2 依赖变化不断重置 → 图谱闪烁/不显示 修复: useCallback 稳定 switchToEditor 引用 3. frontmatter 块式 YAML 列表解析: parseList 只支持内联 [a, b] 格式, 用户手写 links:/tags: 多行 - item 格式无法解析 → 知识图谱无边 修复: parseYaml 支持 YAML 块式列表 (- item 多行) 新增 E2E 测试 graph-render.spec.ts 验证思维导图+知识图谱渲染内容 新增单元测试覆盖块式 YAML 列表解析
This commit is contained in:
@@ -14,6 +14,20 @@ describe('splitFrontmatter', () => {
|
||||
expect(meta).toEqual<DocMeta>({ title: '我的标题', tags: ['a','b'], star: true, links: ['x/y.md'] });
|
||||
expect(body).toBe('# 正文');
|
||||
});
|
||||
it('块式 YAML 列表(多行 - item)', () => {
|
||||
const raw = '---\ntitle: 标题\nlinks:\n - a.md\n - b.md\ntags:\n - x\n - y\n---\n# 正文';
|
||||
const { meta, body } = splitFrontmatter(raw);
|
||||
expect(meta.links).toEqual(['a.md', 'b.md']);
|
||||
expect(meta.tags).toEqual(['x', 'y']);
|
||||
expect(meta.title).toBe('标题');
|
||||
expect(body).toBe('# 正文');
|
||||
});
|
||||
it('块式列表后紧跟其他字段', () => {
|
||||
const raw = '---\nlinks:\n - a.md\nstar: true\n---\n# B';
|
||||
const { meta } = splitFrontmatter(raw);
|
||||
expect(meta.links).toEqual(['a.md']);
|
||||
expect(meta.star).toBe(true);
|
||||
});
|
||||
it('带引号的值', () => {
|
||||
const { meta } = splitFrontmatter('---\ntitle: "含: 冒号"\n---\n');
|
||||
expect(meta.title).toBe('含: 冒号');
|
||||
|
||||
Reference in New Issue
Block a user