Feat:优化reRender方法

This commit is contained in:
街角小林 2023-12-15 09:29:41 +08:00
parent 0ec16bd136
commit 42ffbd728c
3 changed files with 19 additions and 7 deletions

View File

@ -168,12 +168,10 @@ class MindMap {
// 重新渲染
reRender(callback, source = '') {
this.clearDraw() // 清空画布的操作不能放到队列任务里否则当reRender后又执行了render当前回调会被覆盖掉
this.batchExecution.push('render', () => {
this.initTheme()
this.renderer.reRender = true
this.renderer.render(callback, source)
})
this.renderer.reRender = true // 标记为重新渲染
this.renderer.clearCache() // 清空节点缓存池
this.clearDraw() // 清空画布
this.render(callback, (source = ''))
}
// 获取或更新容器尺寸位置信息

View File

@ -387,6 +387,13 @@ class Render {
this.mindMap.keyCommand.restore()
}
// 清空节点缓存池
clearCache() {
this.layout.lru.clear()
this.nodeCache = {}
this.lastNodeCache = {}
}
// 渲染
render(callback = () => {}, source) {
// 如果当前还没有渲染完毕,不再触发渲染
@ -431,7 +438,9 @@ class Render {
this.waitRenderingParams = []
this.render(...params)
} else {
if (this.reRender) this.reRender = false
if (this.reRender) {
this.reRender = false
}
// 触发一次保存,因为修改了渲染树的数据
if (
this.mindMap.richText &&

View File

@ -35,4 +35,9 @@ export default class Lru {
return this.pool.get(key)
}
}
clear() {
this.size = 0
this.pool = new Map()
}
}