mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-12 08:58:15 +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;
|
||||
// const whitelist: string[] = [];
|
||||
|
||||
interface IProps {
|
||||
_leaf: Node | undefined;
|
||||
@ -133,6 +132,8 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
||||
const editor = host?.designer?.editor;
|
||||
const { Component, forwardRef } = adapter.getRuntime();
|
||||
|
||||
const componentCacheId = schema.id;
|
||||
|
||||
if (!cache || (curDocumentId && curDocumentId !== cache.documentId)) {
|
||||
cache?.event.forEach(event => {
|
||||
event.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn());
|
||||
@ -151,8 +152,8 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
||||
getNode,
|
||||
});
|
||||
|
||||
if (curDocumentId && cache.component.has(schema.id)) {
|
||||
return cache.component.get(schema.id);
|
||||
if (curDocumentId && cache.component.has(componentCacheId)) {
|
||||
return cache.component.get(componentCacheId);
|
||||
}
|
||||
|
||||
class LeafHoc extends Component {
|
||||
@ -302,6 +303,14 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
||||
singleRender: false,
|
||||
};
|
||||
}
|
||||
if (leaf?.hasLoop()) {
|
||||
// 含有循环配置的元素,父元素是最小渲染单元
|
||||
this.renderUnitInfo = {
|
||||
minimalUnitId: leaf?.parent?.id,
|
||||
minimalUnitName: leaf?.parent?.componentName,
|
||||
singleRender: false,
|
||||
};
|
||||
}
|
||||
if (leaf?.parent) {
|
||||
this.getRenderUnitInfo(leaf.parent);
|
||||
}
|
||||
@ -362,7 +371,7 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
||||
__debug('key is ___loop___, render a page!');
|
||||
container.rerender();
|
||||
// 由于 scope 变化,需要清空缓存,使用新的 scope
|
||||
cache.component.delete(schema.id);
|
||||
cache.component.delete(componentCacheId);
|
||||
return;
|
||||
}
|
||||
if (!this.shouldRenderSingleNode()) {
|
||||
@ -511,7 +520,7 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
|
||||
|
||||
LeafWrapper.displayName = (Comp as any).displayName;
|
||||
|
||||
cache.component.set(schema.id, LeafWrapper);
|
||||
cache.component.set(componentCacheId, LeafWrapper);
|
||||
|
||||
return LeafWrapper;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user