fix: fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node

This commit is contained in:
liujuping 2022-09-21 10:09:38 +08:00 committed by LeoYuan 袁力皓
parent ecb9dca2b9
commit f400172825
5 changed files with 24 additions and 2 deletions

View File

@ -538,6 +538,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
// mock _leaf减少性能开销 // mock _leaf减少性能开销
const _leaf = { const _leaf = {
isEmpty: () => false, isEmpty: () => false,
isMock: true,
}; };
viewProps._leaf = _leaf; viewProps._leaf = _leaf;
return createElement(Comp, viewProps, children); return createElement(Comp, viewProps, children);

View File

@ -465,6 +465,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
// mock _leaf减少性能开销 // mock _leaf减少性能开销
const _leaf = { const _leaf = {
isEmpty: () => false, isEmpty: () => false,
isMock: true,
}; };
viewProps._leaf = _leaf; viewProps._leaf = _leaf;
return createElement(Comp, viewProps, children); return createElement(Comp, viewProps, children);

View File

@ -32,6 +32,7 @@
}, },
"devDependencies": { "devDependencies": {
"@alib/build-scripts": "^0.1.18", "@alib/build-scripts": "^0.1.18",
"@alifd/next": "^1.26.0",
"@alilc/lowcode-designer": "1.0.14", "@alilc/lowcode-designer": "1.0.14",
"@alilc/lowcode-test-mate": "^1.0.1", "@alilc/lowcode-test-mate": "^1.0.1",
"@babel/plugin-transform-typescript": "^7.16.8", "@babel/plugin-transform-typescript": "^7.16.8",

View File

@ -514,7 +514,12 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
} }
get leaf(): Node | undefined { get leaf(): Node | undefined {
return this.props._leaf || getNode?.(componentCacheId); if (this.props._leaf?.isMock) {
// 低代码组件作为一个整体更新,其内部的组件不需要监听相关事件
return undefined;
}
return getNode?.(componentCacheId);
} }
render() { render() {

View File

@ -232,6 +232,9 @@ describe('mini unit render', () => {
parent: MiniRenderDivNode, parent: MiniRenderDivNode,
}); });
nodeMap.set(miniRenderSchema.id, MiniRenderDivNode);
nodeMap.set(textSchema.id, TextNode);
component = renderer.create( component = renderer.create(
// @ts-ignore // @ts-ignore
<MiniRenderDiv _leaf={MiniRenderDivNode}> <MiniRenderDiv _leaf={MiniRenderDivNode}>
@ -277,6 +280,8 @@ describe('mini unit render', () => {
}), }),
}); });
nodeMap.set(textSchema.id, TextNode);
renderer.create( renderer.create(
// @ts-ignore // @ts-ignore
<div> <div>
@ -319,6 +324,8 @@ describe('mini unit render', () => {
isRoot: true, isRoot: true,
}); });
nodeMap.set(textSchema.id, TextNode);
const component = renderer.create( const component = renderer.create(
<Text _leaf={TextNode} content="content"></Text> <Text _leaf={TextNode} content="content"></Text>
); );
@ -351,6 +358,8 @@ describe('mini unit render', () => {
}) })
}); });
nodeMap.set(textSchema.id, TextNode);
const component = renderer.create( const component = renderer.create(
<Text _leaf={TextNode} content="content"></Text> <Text _leaf={TextNode} content="content"></Text>
); );
@ -370,7 +379,9 @@ describe('mini unit render', () => {
}); });
it('parent is a mock leaf', () => { it('parent is a mock leaf', () => {
const MiniRenderDivNode = {}; const MiniRenderDivNode = {
isMock: true,
};
const component = renderer.create( const component = renderer.create(
// @ts-ignore // @ts-ignore
@ -409,6 +420,9 @@ describe('mini unit render', () => {
hasLoop: true, hasLoop: true,
}); });
nodeMap.set(textSchema.id, TextNode);
nodeMap.set(miniRenderSchema.id, MiniRenderDivNode);
component = renderer.create( component = renderer.create(
// @ts-ignore // @ts-ignore
<MiniRenderDiv _leaf={MiniRenderDivNode}> <MiniRenderDiv _leaf={MiniRenderDivNode}>