perf: 全局响应速度优化——1.核心: 所有组件 useStore() 改为窄选择器 useStore(s=>s.field), 之前每次按键 setBody 改变 store.body 导致订阅整个 store 的 14 个组件全部 re-render(TiptapEditor/Editor/FileTree/TabBar/DocInfoPanel/Toolbar/App/SearchBox/TagFilter/SettingsPanel/GraphView/LinkGraph/MoreActions/TitleBar); TiptapEditor 不再订阅 body(仅 currentPath/setBody), body 从 getState() 在 effect 内获取; 2.OutlinePanel collect debounce 300ms(之前每次按键遍历文档树); 3.OutlinePanel scroll handler rAF 节流(之前每像素滚动调 coordsAtPos); 4.修复 TabBar resetEditor 重复声明 + TiptapEditor content 引用
This commit is contained in:
@@ -5,7 +5,15 @@ import { IPC } from '@hunter/shared';
|
||||
import type { TreeNode } from '@hunter/shared';
|
||||
|
||||
export function DocInfoPanel() {
|
||||
const { currentPath, title, meta, tree, toggleStar, addTag, removeTag, addLink, removeLink } = useStore();
|
||||
const currentPath = useStore(s => s.currentPath);
|
||||
const title = useStore(s => s.title);
|
||||
const meta = useStore(s => s.meta);
|
||||
const tree = useStore(s => s.tree);
|
||||
const toggleStar = useStore(s => s.toggleStar);
|
||||
const addTag = useStore(s => s.addTag);
|
||||
const removeTag = useStore(s => s.removeTag);
|
||||
const addLink = useStore(s => s.addLink);
|
||||
const removeLink = useStore(s => s.removeLink);
|
||||
const [tagInput, setTagInput] = useState('');
|
||||
const [linkInput, setLinkInput] = useState('');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user