0.1.0 思维导图卡顿修复
This commit is contained in:
@@ -331,22 +331,6 @@ const MindmapBlockView = ({
|
||||
}, 500);
|
||||
|
||||
const initialSyncDone = useRef(false);
|
||||
// 若渲染结束后激活列表被清空,定期兜底恢复根节点为选中,避免后续指令找不到父节点
|
||||
useEffect(() => {
|
||||
if (!mindmap) return;
|
||||
const timer = window.setInterval(() => {
|
||||
const renderer = mindmap.renderer;
|
||||
if (!renderer) return;
|
||||
if (!renderer.activeNodeList || renderer.activeNodeList.length === 0) {
|
||||
const root = getRootNode(mindmap);
|
||||
if (root && renderer.addNodeToActiveList) {
|
||||
renderer.addNodeToActiveList(root, true);
|
||||
renderer.emitNodeActiveEvent?.(root);
|
||||
}
|
||||
}
|
||||
}, 200);
|
||||
return () => window.clearInterval(timer);
|
||||
}, [getRootNode, mindmap]);
|
||||
useEffect(() => {
|
||||
if (!docId || !mindmap || initialSyncDone.current) return;
|
||||
initialSyncDone.current = true;
|
||||
@@ -757,17 +741,6 @@ const MindmapBlockView = ({
|
||||
window.setTimeout(() => runWhenReady(fn, retry + 1), 50);
|
||||
}
|
||||
};
|
||||
const recenterIfNeeded = (mm?: MindMapInstance | null) => {
|
||||
try {
|
||||
const instance = mm ?? getInstanceCandidate();
|
||||
const renderer = instance?.renderer;
|
||||
const view = instance?.view;
|
||||
renderer?.setRootNodeCenter && renderer.setRootNodeCenter();
|
||||
view?.fit && view.fit();
|
||||
} catch {
|
||||
/* 空 */
|
||||
}
|
||||
};
|
||||
const execWithReflow = (runner: (mm: MindMapInstance) => void) => {
|
||||
const attempt = (retry = 0) => {
|
||||
const instance = getInstanceCandidate();
|
||||
@@ -777,14 +750,6 @@ const MindmapBlockView = ({
|
||||
}
|
||||
const mm = ensureActiveBefore(instance);
|
||||
if (!mm) return;
|
||||
try {
|
||||
const renderer = mm.renderer as any;
|
||||
if (renderer?.refresh) renderer.refresh();
|
||||
if (renderer?.reRender) renderer.reRender();
|
||||
recenterIfNeeded(mm);
|
||||
} catch {
|
||||
/* 空 */
|
||||
}
|
||||
runner(mm);
|
||||
};
|
||||
attempt();
|
||||
|
||||
Reference in New Issue
Block a user