From fa2d00ba3689b9b336a5a2d44c731a3fa4ce61f6 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 6 Aug 2024 14:33:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(data-source):=20=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E7=9A=84runtime=E4=B8=8D=E8=83=BD=E5=AF=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E7=9A=84mock=E9=85=8D=E7=BD=AE=E6=9C=89=E5=BD=B1?= =?UTF-8?q?=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/data-source/src/DataSourceManager.ts | 23 +++++++------------ packages/data-source/src/data-sources/Base.ts | 4 +++- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/packages/data-source/src/DataSourceManager.ts b/packages/data-source/src/DataSourceManager.ts index 85bf7cea..962a0e1d 100644 --- a/packages/data-source/src/DataSourceManager.ts +++ b/packages/data-source/src/DataSourceManager.ts @@ -111,28 +111,21 @@ class DataSourceManager extends EventEmitter { return; } - const beforeInit: ((...args: any[]) => any)[] = []; - const afterInit: ((...args: any[]) => any)[] = []; - - ds.methods.forEach((method) => { + for (const method of ds.methods) { if (typeof method.content !== 'function') return; if (method.timing === 'beforeInit') { - beforeInit.push(method.content); + method.content({ params: {}, dataSource: ds, app: this.app }); } - if (method.timing === 'afterInit') { - afterInit.push(method.content); - } - }); - - for (const method of beforeInit) { - await method({ params: {}, dataSource: ds, app: this.app }); } await ds.init(); - for (const method of afterInit) { - await method({ params: {}, dataSource: ds, app: this.app }); - } + ds.methods.forEach((method) => { + if (typeof method.content !== 'function') return; + if (method.timing === 'afterInit') { + method.content({ params: {}, dataSource: ds, app: this.app }); + } + }); } public get(id: string) { diff --git a/packages/data-source/src/data-sources/Base.ts b/packages/data-source/src/data-sources/Base.ts index 7a166be2..2e1808ab 100644 --- a/packages/data-source/src/data-sources/Base.ts +++ b/packages/data-source/src/data-sources/Base.ts @@ -17,6 +17,8 @@ */ import EventEmitter from 'events'; +import { cloneDeep } from 'lodash-es'; + import type { AppCore, CodeBlockContent, DataSchema, DataSourceSchema } from '@tmagic/schema'; import { getDefaultValueFromFields } from '@tmagic/utils'; @@ -62,7 +64,7 @@ export default class DataSource e if (this.app.platform === 'editor') { // 编辑器中有mock使用mock,没有使用默认值 this.mockData = options.schema.mocks?.find((mock) => mock.useInEditor)?.data || this.getDefaultData(); - data = this.mockData; + data = cloneDeep(this.mockData); } else if (typeof options.useMock === 'boolean' && options.useMock) { // 设置了使用mock就使用mock数据 this.mockData = options.schema.mocks?.find((mock) => mock.enable)?.data || this.getDefaultData();