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();