diff --git a/packages/core/tests/App.spec.ts b/packages/core/tests/App.spec.ts index f3925933..5aa3d903 100644 --- a/packages/core/tests/App.spec.ts +++ b/packages/core/tests/App.spec.ts @@ -1,8 +1,9 @@ import { describe, expect, test } from 'vitest'; -import { MApp, NodeType, TMagicIteratorContainer } from '@tmagic/schema'; +import { MApp, NodeType } from '@tmagic/schema'; import App from '../src/App'; +import TMagicIteratorContainer from '../src/IteratorContainer'; const createAppDsl = (pageLength: number, nodeLength = 0) => { const dsl: MApp = { diff --git a/packages/data-source/src/DataSourceManager.ts b/packages/data-source/src/DataSourceManager.ts index 334936e6..ac0dc7e4 100644 --- a/packages/data-source/src/DataSourceManager.ts +++ b/packages/data-source/src/DataSourceManager.ts @@ -177,7 +177,7 @@ class DataSourceManager extends EventEmitter { this.removeDataSource(schema.id); - this.addDataSource(schema); + this.addDataSource(cloneDeep(schema)); const newDs = this.get(schema.id); if (newDs) { this.init(newDs); diff --git a/packages/data-source/src/data-sources/Base.ts b/packages/data-source/src/data-sources/Base.ts index a5515775..f69e9ef3 100644 --- a/packages/data-source/src/data-sources/Base.ts +++ b/packages/data-source/src/data-sources/Base.ts @@ -62,13 +62,15 @@ export default class DataSource e // eslint-disable-next-line @typescript-eslint/naming-convention const ObservedDataClass = options.ObservedDataClass || SimpleObservedData; if (this.app.platform === 'editor') { + const mocks = cloneDeep(options.schema.mocks || []); // 编辑器中有mock使用mock,没有使用默认值 - this.mockData = options.schema.mocks?.find((mock) => mock.useInEditor)?.data || this.getDefaultData(); + this.mockData = mocks.find((mock) => mock.useInEditor)?.data || this.getDefaultData(); data = cloneDeep(this.mockData); } else if (typeof options.useMock === 'boolean' && options.useMock) { + const mocks = cloneDeep(options.schema.mocks || []); // 设置了使用mock就使用mock数据 - this.mockData = options.schema.mocks?.find((mock) => mock.enable)?.data; - data = this.mockData || this.getDefaultData(); + this.mockData = mocks.find((mock) => mock.enable)?.data; + data = cloneDeep(this.mockData) || this.getDefaultData(); } else if (!options.initialData) { data = this.getDefaultData(); } else {