mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-19 21:06:06 +08:00
fix(editor): 根节点修改在update事件中不要触发依赖收集
This commit is contained in:
parent
8195c105c0
commit
6b481c4473
@ -19,6 +19,7 @@ import {
|
|||||||
createDataSourceTarget,
|
createDataSourceTarget,
|
||||||
DepTargetType,
|
DepTargetType,
|
||||||
NODE_CONDS_KEY,
|
NODE_CONDS_KEY,
|
||||||
|
NodeType,
|
||||||
Target,
|
Target,
|
||||||
} from '@tmagic/core';
|
} from '@tmagic/core';
|
||||||
import { ChangeRecord } from '@tmagic/form';
|
import { ChangeRecord } from '@tmagic/form';
|
||||||
@ -292,7 +293,14 @@ export const initServiceEvents = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
const collectIdle = (nodes: MComponent[], deep: boolean, type?: DepTargetType) =>
|
const collectIdle = (nodes: MComponent[], deep: boolean, type?: DepTargetType) =>
|
||||||
Promise.all(nodes.map((node) => depService.collectIdle([node], { pageId: getPageIdByNode(node) }, deep, type)));
|
Promise.all(
|
||||||
|
nodes.map((node) => {
|
||||||
|
if (node.type === NodeType.ROOT) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
return depService.collectIdle([node], { pageId: getPageIdByNode(node) }, deep, type);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => editorService.get('stage'),
|
() => editorService.get('stage'),
|
||||||
@ -327,7 +335,7 @@ export const initServiceEvents = (
|
|||||||
codeBlockService.setCodeDsl(value.codeBlocks);
|
codeBlockService.setCodeDsl(value.codeBlocks);
|
||||||
dataSourceService.set('dataSources', value.dataSources);
|
dataSourceService.set('dataSources', value.dataSources);
|
||||||
|
|
||||||
depService.removeTargets(DepTargetType.CODE_BLOCK);
|
depService.clearTargets();
|
||||||
|
|
||||||
for (const [id, code] of Object.entries(value.codeBlocks)) {
|
for (const [id, code] of Object.entries(value.codeBlocks)) {
|
||||||
depService.addTarget(createCodeBlockTarget(id, code));
|
depService.addTarget(createCodeBlockTarget(id, code));
|
||||||
@ -386,7 +394,9 @@ export const initServiceEvents = (
|
|||||||
const needRecollectNodes: MComponent[] = [];
|
const needRecollectNodes: MComponent[] = [];
|
||||||
const normalNodes: MComponent[] = [];
|
const normalNodes: MComponent[] = [];
|
||||||
for (const { newNode, oldNode, changeRecords } of data) {
|
for (const { newNode, oldNode, changeRecords } of data) {
|
||||||
if (changeRecords?.length) {
|
if (newNode.type === NodeType.ROOT) {
|
||||||
|
normalNodes.push(newNode);
|
||||||
|
} else if (changeRecords?.length) {
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
forChangeRecords: for (const record of changeRecords) {
|
forChangeRecords: for (const record of changeRecords) {
|
||||||
if (!record.propPath) {
|
if (!record.propPath) {
|
||||||
@ -435,6 +445,7 @@ export const initServiceEvents = (
|
|||||||
handler();
|
handler();
|
||||||
} else {
|
} else {
|
||||||
updateStageNodes(normalNodes);
|
updateStageNodes(normalNodes);
|
||||||
|
|
||||||
// 在上面判断是否需要收集数据源依赖中已经更新stage
|
// 在上面判断是否需要收集数据源依赖中已经更新stage
|
||||||
Promise.all([
|
Promise.all([
|
||||||
collectIdle(normalNodes, true, DepTargetType.CODE_BLOCK),
|
collectIdle(normalNodes, true, DepTargetType.CODE_BLOCK),
|
||||||
|
@ -26,6 +26,8 @@ onmessage = (e) => {
|
|||||||
postMessage({});
|
postMessage({});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watcher.clearTargets();
|
||||||
|
|
||||||
if (mApp.codeBlocks) {
|
if (mApp.codeBlocks) {
|
||||||
for (const [id, code] of Object.entries(mApp.codeBlocks)) {
|
for (const [id, code] of Object.entries(mApp.codeBlocks)) {
|
||||||
watcher.addTarget(createCodeBlockTarget(id, code));
|
watcher.addTarget(createCodeBlockTarget(id, code));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user