Преглед изворни кода

fix(hooks): 修改在使用useEcharts时, getInstance无法获取到最新的echarts实例的问题 (#2650)

Lantz пре 1 година
родитељ
комит
3a1ec7ac86
1 измењених фајлова са 18 додато и 15 уклоњено
  1. 18 15
      src/hooks/web/useECharts.ts

+ 18 - 15
src/hooks/web/useECharts.ts

@@ -60,23 +60,26 @@ export function useECharts(
 
   function setOptions(options: EChartsOption, clear = true) {
     cacheOptions.value = options;
-    if (unref(elRef)?.offsetHeight === 0) {
-      useTimeoutFn(() => {
-        setOptions(unref(getOptions));
-      }, 30);
-      return;
-    }
-    nextTick(() => {
-      useTimeoutFn(() => {
-        if (!chartInstance) {
-          initCharts(getDarkMode.value as 'default');
+    return new Promise((resolve) => {
+      if (unref(elRef)?.offsetHeight === 0) {
+        useTimeoutFn(() => {
+          setOptions(unref(getOptions));
+          resolve(null);
+        }, 30);
+      }
+      nextTick(() => {
+        useTimeoutFn(() => {
+          if (!chartInstance) {
+            initCharts(getDarkMode.value as 'default');
 
-          if (!chartInstance) return;
-        }
-        clear && chartInstance?.clear();
+            if (!chartInstance) return;
+          }
+          clear && chartInstance?.clear();
 
-        chartInstance?.setOption(unref(getOptions));
-      }, 30);
+          chartInstance?.setOption(unref(getOptions));
+          resolve(null);
+        }, 30);
+      });
     });
   }