Skip to content

Commit f400172

Browse files
liujupingLeoYuan
authored andcommitted
fix: fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node
1 parent ecb9dca commit f400172

File tree

5 files changed

+24
-2
lines changed

5 files changed

+24
-2
lines changed

packages/rax-simulator-renderer/src/renderer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
538538
// mock _leaf,减少性能开销
539539
const _leaf = {
540540
isEmpty: () => false,
541+
isMock: true,
541542
};
542543
viewProps._leaf = _leaf;
543544
return createElement(Comp, viewProps, children);

packages/react-simulator-renderer/src/renderer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
465465
// mock _leaf,减少性能开销
466466
const _leaf = {
467467
isEmpty: () => false,
468+
isMock: true,
468469
};
469470
viewProps._leaf = _leaf;
470471
return createElement(Comp, viewProps, children);

packages/renderer-core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
},
3333
"devDependencies": {
3434
"@alib/build-scripts": "^0.1.18",
35+
"@alifd/next": "^1.26.0",
3536
"@alilc/lowcode-designer": "1.0.14",
3637
"@alilc/lowcode-test-mate": "^1.0.1",
3738
"@babel/plugin-transform-typescript": "^7.16.8",

packages/renderer-core/src/hoc/leaf.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,12 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
514514
}
515515

516516
get leaf(): Node | undefined {
517-
return this.props._leaf || getNode?.(componentCacheId);
517+
if (this.props._leaf?.isMock) {
518+
// 低代码组件作为一个整体更新,其内部的组件不需要监听相关事件
519+
return undefined;
520+
}
521+
522+
return getNode?.(componentCacheId);
518523
}
519524

520525
render() {

packages/renderer-core/tests/hoc/leaf.test.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ describe('mini unit render', () => {
232232
parent: MiniRenderDivNode,
233233
});
234234

235+
nodeMap.set(miniRenderSchema.id, MiniRenderDivNode);
236+
nodeMap.set(textSchema.id, TextNode);
237+
235238
component = renderer.create(
236239
// @ts-ignore
237240
<MiniRenderDiv _leaf={MiniRenderDivNode}>
@@ -277,6 +280,8 @@ describe('mini unit render', () => {
277280
}),
278281
});
279282

283+
nodeMap.set(textSchema.id, TextNode);
284+
280285
renderer.create(
281286
// @ts-ignore
282287
<div>
@@ -319,6 +324,8 @@ describe('mini unit render', () => {
319324
isRoot: true,
320325
});
321326

327+
nodeMap.set(textSchema.id, TextNode);
328+
322329
const component = renderer.create(
323330
<Text _leaf={TextNode} content="content"></Text>
324331
);
@@ -351,6 +358,8 @@ describe('mini unit render', () => {
351358
})
352359
});
353360

361+
nodeMap.set(textSchema.id, TextNode);
362+
354363
const component = renderer.create(
355364
<Text _leaf={TextNode} content="content"></Text>
356365
);
@@ -370,7 +379,9 @@ describe('mini unit render', () => {
370379
});
371380

372381
it('parent is a mock leaf', () => {
373-
const MiniRenderDivNode = {};
382+
const MiniRenderDivNode = {
383+
isMock: true,
384+
};
374385

375386
const component = renderer.create(
376387
// @ts-ignore
@@ -409,6 +420,9 @@ describe('mini unit render', () => {
409420
hasLoop: true,
410421
});
411422

423+
nodeMap.set(textSchema.id, TextNode);
424+
nodeMap.set(miniRenderSchema.id, MiniRenderDivNode);
425+
412426
component = renderer.create(
413427
// @ts-ignore
414428
<MiniRenderDiv _leaf={MiniRenderDivNode}>

0 commit comments

Comments
 (0)