mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-19 14:04:28 +00:00
fix: 修复配置循环属性的组件任意变更时,作用域出错问题
This commit is contained in:
parent
ffa0ebbe36
commit
8bed8c8335
@ -21,7 +21,6 @@ export type IComponentHoc = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type IComponentConstruct = (Comp: types.IBaseRenderer, info: IComponentHocInfo) => types.Constructor;
|
export type IComponentConstruct = (Comp: types.IBaseRenderer, info: IComponentHocInfo) => types.Constructor;
|
||||||
// const whitelist: string[] = [];
|
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
_leaf: Node | undefined;
|
_leaf: Node | undefined;
|
||||||
@ -133,6 +132,8 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
|||||||
const editor = host?.designer?.editor;
|
const editor = host?.designer?.editor;
|
||||||
const { Component, forwardRef } = adapter.getRuntime();
|
const { Component, forwardRef } = adapter.getRuntime();
|
||||||
|
|
||||||
|
const componentCacheId = schema.id;
|
||||||
|
|
||||||
if (!cache || (curDocumentId && curDocumentId !== cache.documentId)) {
|
if (!cache || (curDocumentId && curDocumentId !== cache.documentId)) {
|
||||||
cache?.event.forEach(event => {
|
cache?.event.forEach(event => {
|
||||||
event.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn());
|
event.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn());
|
||||||
@ -151,8 +152,8 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
|||||||
getNode,
|
getNode,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (curDocumentId && cache.component.has(schema.id)) {
|
if (curDocumentId && cache.component.has(componentCacheId)) {
|
||||||
return cache.component.get(schema.id);
|
return cache.component.get(componentCacheId);
|
||||||
}
|
}
|
||||||
|
|
||||||
class LeafHoc extends Component {
|
class LeafHoc extends Component {
|
||||||
@ -302,6 +303,14 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
|||||||
singleRender: false,
|
singleRender: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
if (leaf?.hasLoop()) {
|
||||||
|
// 含有循环配置的元素,父元素是最小渲染单元
|
||||||
|
this.renderUnitInfo = {
|
||||||
|
minimalUnitId: leaf?.parent?.id,
|
||||||
|
minimalUnitName: leaf?.parent?.componentName,
|
||||||
|
singleRender: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
if (leaf?.parent) {
|
if (leaf?.parent) {
|
||||||
this.getRenderUnitInfo(leaf.parent);
|
this.getRenderUnitInfo(leaf.parent);
|
||||||
}
|
}
|
||||||
@ -362,7 +371,7 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
|||||||
__debug('key is ___loop___, render a page!');
|
__debug('key is ___loop___, render a page!');
|
||||||
container.rerender();
|
container.rerender();
|
||||||
// 由于 scope 变化,需要清空缓存,使用新的 scope
|
// 由于 scope 变化,需要清空缓存,使用新的 scope
|
||||||
cache.component.delete(schema.id);
|
cache.component.delete(componentCacheId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!this.shouldRenderSingleNode()) {
|
if (!this.shouldRenderSingleNode()) {
|
||||||
@ -511,7 +520,7 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
|||||||
|
|
||||||
LeafWrapper.displayName = (Comp as any).displayName;
|
LeafWrapper.displayName = (Comp as any).displayName;
|
||||||
|
|
||||||
cache.component.set(schema.id, LeafWrapper);
|
cache.component.set(componentCacheId, LeafWrapper);
|
||||||
|
|
||||||
return LeafWrapper;
|
return LeafWrapper;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user