From 03a2efe3c699176d6763af1f3b341b2ba6d64a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=BD=98?= <97274247@qq.com> Date: Tue, 15 Nov 2022 16:21:35 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=BC=96=E8=BE=91JSON=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/EditTools/hooks/useSyncUpdate.hook.ts | 9 +++------ src/views/edit/index.vue | 11 +++++------ src/views/preview/wrapper.vue | 6 +++--- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts index 73ea2eee..5a152be0 100644 --- a/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts +++ b/src/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.ts @@ -8,17 +8,14 @@ import { editToJsonInterval } from '@/settings/designSetting' const { updateComponent } = useSync() const chartEditStore = useChartEditStore() - + // 侦听器更新 const useSyncUpdateHandle = () => { - const routerParamsInfo = useRoute() // 定义侦听器变量 let timer: any const updateFn = (e: any) => updateComponent(e!.detail, true, false) - const syncData = () => { - if (routerParamsInfo.name == ChartEnum.CHART_HOME_NAME) { - dispatchEvent(new CustomEvent(SavePageEnum.CHART, { detail: chartEditStore.getStorageInfo })) - } + const syncData = async () => { + dispatchEvent(new CustomEvent(SavePageEnum.CHART, { detail: chartEditStore.getStorageInfo })) } // 开启侦听 diff --git a/src/views/edit/index.vue b/src/views/edit/index.vue index b67efa28..42d1e4ab 100644 --- a/src/views/edit/index.vue +++ b/src/views/edit/index.vue @@ -44,14 +44,13 @@ import { icon } from '@/plugins' const { ChevronBackOutlineIcon, DownloadIcon } = icon.ionicons5 const showOpenFilePicker: Function = (window as any).showOpenFilePicker -let content = ref('') - +const content = ref('') // 从sessionStorage 获取数据 -function getDataBySession() { - const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType +async function getDataBySession() { + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType content.value = JSON.stringify(localStorageInfo, undefined, 2) } -getDataBySession() +setTimeout(getDataBySession) // 返回父窗口 function back() { @@ -86,7 +85,7 @@ document.addEventListener('keydown', function (e) { addEventListener('blur', updateSync) // 同步更新 -function updateSync() { +async function updateSync() { if (!window.opener) { return window['$message'].error('源窗口已关闭,视图同步失败') } diff --git a/src/views/preview/wrapper.vue b/src/views/preview/wrapper.vue index d209438a..86abc6b3 100644 --- a/src/views/preview/wrapper.vue +++ b/src/views/preview/wrapper.vue @@ -12,12 +12,12 @@ import { ref } from 'vue' import Preview from './index.vue' let key = ref(Date.now()) -let localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType -// 数据变更 -> 同步sessionStorage -> reload页面 (重新执行Mounted) +// 数据变更 -> 组件销毁重建 ;[SavePageEnum.JSON, SavePageEnum.CHART].forEach((saveEvent: string) => { if (!window.opener) return - window.opener.addEventListener(saveEvent, (e: any) => { + window.opener.addEventListener(saveEvent, async (e: any) => { + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType setSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST, [{ ...e.detail, id: localStorageInfo.id }]) key.value = Date.now() })