From 7a20ce2f79698210c7222b0a779474addc2bb35c Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Wed, 5 Jul 2023 14:21:15 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E8=8A=82=E7=82=B9=E6=8B=96=E6=8B=BD=E6=88=903?= =?UTF-8?q?=E7=BA=A7=E8=8A=82=E7=82=B9=E6=97=B6=E8=8A=82=E7=82=B9=E8=BE=B9?= =?UTF-8?q?=E6=A1=86=E6=A0=B7=E5=BC=8F=E6=9C=AA=E6=9B=B4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/layouts/Base.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/simple-mind-map/src/layouts/Base.js b/simple-mind-map/src/layouts/Base.js index 701fffbf..29646e88 100644 --- a/simple-mind-map/src/layouts/Base.js +++ b/simple-mind-map/src/layouts/Base.js @@ -48,6 +48,13 @@ class Base { return [CONSTANTS.CHANGE_THEME, CONSTANTS.TRANSFORM_TO_NORMAL_NODE].includes(this.renderer.renderSource) } + // 层级类型改变 + checkIsLayerTypeChange(oldIndex, newIndex) { + if (oldIndex >= 2 && newIndex >= 2) return false + if (oldIndex >= 2 && newIndex < 2) return true + if (oldIndex < 2 && newIndex >= 2) return true + } + // 创建节点实例 createNode(data, parent, isRoot, layerIndex) { // 创建节点 @@ -55,11 +62,12 @@ class Base { // 数据上保存了节点引用,那么直接复用节点 if (data && data._node && !this.renderer.reRender) { newNode = data._node + let isLayerTypeChange = this.checkIsLayerTypeChange(newNode.layerIndex, layerIndex) newNode.reset() newNode.layerIndex = layerIndex this.cacheNode(data._node.uid, newNode) // 主题或主题配置改变了需要重新计算节点大小和布局 - if (this.checkIsNeedResizeSources()) { + if (this.checkIsNeedResizeSources() || isLayerTypeChange) { newNode.getSize() newNode.needLayout = true } @@ -68,6 +76,7 @@ class Base { newNode = this.lru.get(data.data.uid) // 保存该节点上一次的数据 let lastData = JSON.stringify(newNode.nodeData.data) + let isLayerTypeChange = this.checkIsLayerTypeChange(newNode.layerIndex, layerIndex) newNode.reset() newNode.nodeData = newNode.handleData(data || {}) newNode.layerIndex = layerIndex @@ -77,7 +86,7 @@ class Base { let isResizeSource = this.checkIsNeedResizeSources() // 节点数据改变了需要重新计算节点大小和布局 let isNodeDataChange = lastData !== JSON.stringify(data.data) - if (isResizeSource || isNodeDataChange) { + if (isResizeSource || isNodeDataChange || isLayerTypeChange) { newNode.getSize() newNode.needLayout = true }