Skip to content

Commit

Permalink
fix(core): deep-state-observer update 的data与初始化时相同,导致get data为空
Browse files Browse the repository at this point in the history
  • Loading branch information
roymondchen committed Jan 20, 2025
1 parent e8461f9 commit 701a9d6
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
3 changes: 2 additions & 1 deletion packages/core/tests/App.spec.ts
Original file line number Diff line number Diff line change
@@ -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 = {
Expand Down
2 changes: 1 addition & 1 deletion packages/data-source/src/DataSourceManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
8 changes: 5 additions & 3 deletions packages/data-source/src/data-sources/Base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,15 @@ export default class DataSource<T extends DataSourceSchema = DataSourceSchema> 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 {
Expand Down

0 comments on commit 701a9d6

Please sign in to comment.