From f4001728259047b09db75d76a8c3ef1e1bcb4e0a Mon Sep 17 00:00:00 2001 From: liujuping Date: Wed, 21 Sep 2022 10:09:38 +0800 Subject: [PATCH] fix: fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node --- packages/rax-simulator-renderer/src/renderer.ts | 1 + .../react-simulator-renderer/src/renderer.ts | 1 + packages/renderer-core/package.json | 1 + packages/renderer-core/src/hoc/leaf.tsx | 7 ++++++- packages/renderer-core/tests/hoc/leaf.test.tsx | 16 +++++++++++++++- 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/rax-simulator-renderer/src/renderer.ts b/packages/rax-simulator-renderer/src/renderer.ts index 0e42785e7..a123dfc7e 100644 --- a/packages/rax-simulator-renderer/src/renderer.ts +++ b/packages/rax-simulator-renderer/src/renderer.ts @@ -538,6 +538,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer { // mock _leaf,减少性能开销 const _leaf = { isEmpty: () => false, + isMock: true, }; viewProps._leaf = _leaf; return createElement(Comp, viewProps, children); diff --git a/packages/react-simulator-renderer/src/renderer.ts b/packages/react-simulator-renderer/src/renderer.ts index 5605ba479..2c6f9be06 100644 --- a/packages/react-simulator-renderer/src/renderer.ts +++ b/packages/react-simulator-renderer/src/renderer.ts @@ -465,6 +465,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer { // mock _leaf,减少性能开销 const _leaf = { isEmpty: () => false, + isMock: true, }; viewProps._leaf = _leaf; return createElement(Comp, viewProps, children); diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index 1466bf1fb..69acc9a5c 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -32,6 +32,7 @@ }, "devDependencies": { "@alib/build-scripts": "^0.1.18", + "@alifd/next": "^1.26.0", "@alilc/lowcode-designer": "1.0.14", "@alilc/lowcode-test-mate": "^1.0.1", "@babel/plugin-transform-typescript": "^7.16.8", diff --git a/packages/renderer-core/src/hoc/leaf.tsx b/packages/renderer-core/src/hoc/leaf.tsx index 3c1c96b72..d97140192 100644 --- a/packages/renderer-core/src/hoc/leaf.tsx +++ b/packages/renderer-core/src/hoc/leaf.tsx @@ -514,7 +514,12 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { } get leaf(): Node | undefined { - return this.props._leaf || getNode?.(componentCacheId); + if (this.props._leaf?.isMock) { + // 低代码组件作为一个整体更新,其内部的组件不需要监听相关事件 + return undefined; + } + + return getNode?.(componentCacheId); } render() { diff --git a/packages/renderer-core/tests/hoc/leaf.test.tsx b/packages/renderer-core/tests/hoc/leaf.test.tsx index 308a8b900..4539aae45 100644 --- a/packages/renderer-core/tests/hoc/leaf.test.tsx +++ b/packages/renderer-core/tests/hoc/leaf.test.tsx @@ -232,6 +232,9 @@ describe('mini unit render', () => { parent: MiniRenderDivNode, }); + nodeMap.set(miniRenderSchema.id, MiniRenderDivNode); + nodeMap.set(textSchema.id, TextNode); + component = renderer.create( // @ts-ignore @@ -277,6 +280,8 @@ describe('mini unit render', () => { }), }); + nodeMap.set(textSchema.id, TextNode); + renderer.create( // @ts-ignore
@@ -319,6 +324,8 @@ describe('mini unit render', () => { isRoot: true, }); + nodeMap.set(textSchema.id, TextNode); + const component = renderer.create( ); @@ -351,6 +358,8 @@ describe('mini unit render', () => { }) }); + nodeMap.set(textSchema.id, TextNode); + const component = renderer.create( ); @@ -370,7 +379,9 @@ describe('mini unit render', () => { }); it('parent is a mock leaf', () => { - const MiniRenderDivNode = {}; + const MiniRenderDivNode = { + isMock: true, + }; const component = renderer.create( // @ts-ignore @@ -409,6 +420,9 @@ describe('mini unit render', () => { hasLoop: true, }); + nodeMap.set(textSchema.id, TextNode); + nodeMap.set(miniRenderSchema.id, MiniRenderDivNode); + component = renderer.create( // @ts-ignore