From 305ea4619fe15efbae069ef3f289c8742e8d51ee Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 17 Jul 2025 17:20:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(data-source):=20=E9=A1=B5=E9=9D=A2=E6=9C=AA?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=A5=BD=E4=B9=8B=E5=89=8D=EF=BC=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E6=95=B0=E6=8D=AE=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E5=90=8E=E9=9C=80=E8=A6=81=E4=BF=AE=E6=94=B9page.data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/createDataSourceManager.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/data-source/src/createDataSourceManager.ts b/packages/data-source/src/createDataSourceManager.ts index 1026f29e..b6ed6cb8 100644 --- a/packages/data-source/src/createDataSourceManager.ts +++ b/packages/data-source/src/createDataSourceManager.ts @@ -18,7 +18,7 @@ import { union } from 'lodash-es'; import type { default as TMagicApp } from '@tmagic/core'; -import { getDepNodeIds, getNodes, isPage, isPageFragment } from '@tmagic/core'; +import { getDepNodeIds, getNodes, isPage, isPageFragment, replaceChildNode } from '@tmagic/core'; import DataSourceManager from './DataSourceManager'; import type { ChangeEvent, DataSourceManagerData } from './types'; @@ -74,14 +74,21 @@ export const createDataSourceManager = (app: TMagicApp, useMock?: boolean, initi if (typeof app.page?.setData === 'function') { if (isPage(newNode)) { app.page.setData(newNode); - } else if (isPageFragment(newNode)) { - for (const [, page] of app.pageFragments) { - if (page.data.id === node.id) { - page.setData(newNode); + } else if (page.id === app.page.data.id && !app.page.instance) { + replaceChildNode(newNode, [app.page.data]); + } + + app.getNode(node.id)?.setData(newNode); + + for (const [, pageFragment] of app.pageFragments) { + if (pageFragment.data.id === newNode.id) { + pageFragment.setData(newNode); + } else if (pageFragment.data.id === page.id) { + pageFragment.getNode(newNode.id)?.setData(newNode); + if (!pageFragment.instance) { + replaceChildNode(newNode, [pageFragment.data]); } } - } else { - app.getNode(node.id)?.setData(newNode); } }