diff --git a/web3/packages/mind-map/src/components/MindMap.vue b/web3/packages/mind-map/src/components/MindMap.vue
index 6c10cc84..c5aa0e1f 100644
--- a/web3/packages/mind-map/src/components/MindMap.vue
+++ b/web3/packages/mind-map/src/components/MindMap.vue
@@ -8,9 +8,9 @@
@mousedown="onMousedown"
@mousemove="onMousemove"
>
-
- svgBoxLeft:{{ svgBoxLeft }}
- svgBoxTop:{{ svgBoxTop }}
+ svgBoxScale:{{ svgBoxScale }}
+ svgBoxLeft:{{ svgBoxLeft }}
+ svgBoxTop:{{ svgBoxTop }}
{
+ drawMiniMap();
+}, 500);
-const timer = ref(null);
+// 使用防抖函数处理窗口大小变化
+const debouncedSetSize = debounce(() => {
+ width.value = Math.min(window.innerWidth - 80, 370);
+ nextTick(() => {
+ if (showMiniMap.value && navigatorBoxRef.value) {
+ init();
+ drawMiniMap();
+ }
+ });
+}, 300);
const boxWidth = ref(0);
const boxHeight = ref(0);
@@ -68,13 +77,12 @@ const viewBoxStyle = ref({
const mindMapImg = ref("");
const width = ref(0);
-const setSizeTimer = ref(null);
const withTransition = ref(true);
const navigatorBoxRef = ref(null);
const svgBoxRef = ref(null);
-function init() {
+async function init() {
if (!navigatorBoxRef.value) return;
const rect = navigatorBoxRef.value.getBoundingClientRect();
// console.log("rect", rect);
@@ -82,6 +90,8 @@ function init() {
boxWidth.value = rect.width;
boxHeight.value = rect.height;
+ await nextTick();
+
const mindMapInstance = getMindMapInstance();
// data_change
@@ -117,7 +127,7 @@ function drawMiniMap() {
boxWidth.value,
boxHeight.value
);
-
+
if (!calculationResult) return;
const {
@@ -128,20 +138,18 @@ function drawMiniMap() {
miniMapBoxTop,
} = calculationResult;
- if (getImgUrl && typeof getImgUrl === "function")
+ getImgUrl &&
getImgUrl((img) => {
mindMapImg.value = img;
});
- if (newViewBoxStyle) viewBoxStyle.value = newViewBoxStyle;
+ viewBoxStyle.value = newViewBoxStyle;
- console.log('miniMapBoxScale ===>>' , miniMapBoxScale)
+ svgBoxScale.value = miniMapBoxScale;
- if (miniMapBoxScale) svgBoxScale.value = miniMapBoxScale;
+ svgBoxLeft.value = miniMapBoxLeft;
- if (miniMapBoxLeft) svgBoxLeft.value = miniMapBoxLeft;
-
- if (miniMapBoxTop) svgBoxTop.value = miniMapBoxTop;
+ svgBoxTop.value = miniMapBoxTop;
}
watch(
@@ -158,23 +166,11 @@ watch(
function data_change() {
if (!showMiniMap.value) return;
- clearTimeout(timer.value);
- timer.value = setTimeout(() => {
- drawMiniMap();
- }, 500);
+ debouncedDrawMiniMap();
}
function setSize() {
- clearTimeout(setSizeTimer.value);
- setSizeTimer.value = setTimeout(() => {
- width.value = Math.min(window.innerWidth - 80, 370);
- nextTick(() => {
- if (showMiniMap.value && navigatorBoxRef.value) {
- init();
- drawMiniMap();
- }
- });
- }, 300);
+ debouncedSetSize();
}
function onMousedown(e) {
@@ -263,8 +259,8 @@ onUnmounted(() => {
);
}
- clearTimeout(timer.value);
- clearTimeout(setSizeTimer.value);
+ debouncedDrawMiniMap.cancel && debouncedDrawMiniMap.cancel();
+ debouncedSetSize.cancel && debouncedSetSize.cancel();
});