From 4cd9b666534638aba48fea82b407bc38e3b780b6 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 31 Mar 2023 22:25:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=BB=E6=AD=A2=E7=9F=AD=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E8=A7=A6=E5=8F=91=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/Render.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/simple-mind-map/src/Render.js b/simple-mind-map/src/Render.js index 9e55f9f6..66fbfbcb 100644 --- a/simple-mind-map/src/Render.js +++ b/simple-mind-map/src/Render.js @@ -34,6 +34,11 @@ class Render { this.renderTree = merge({}, this.mindMap.opt.data || {}) // 是否重新渲染 this.reRender = false + // 是否正在渲染中 + this.isRendering = false + // 是否存在等待渲染 + this.hasWaitRendering = false + // 用于缓存节点 this.nodeCache = {} this.lastNodeCache = {} // 触发render的来源 @@ -237,6 +242,13 @@ class Render { // 渲染 render(callback = () => {}, source) { + // 如果当前还没有渲染完毕,不再触发渲染 + if (this.isRendering) { + // 等待当前渲染完毕后再进行一次渲染 + this.hasWaitRendering = true + return + } + this.isRendering = true // 触发当前重新渲染的来源 this.renderSource = source // 节点缓存 @@ -261,8 +273,13 @@ class Render { this.root = root // 渲染节点 this.root.render(() => { + this.isRendering = false this.mindMap.emit('node_tree_render_end') callback && callback() + if (this.hasWaitRendering) { + this.hasWaitRendering = false + this.render(callback, source) + } }) }) this.mindMap.emit('node_active', null, this.activeNodeList)