fix: 移除事件属性为 {ignored: true} 的情况

This commit is contained in:
lihao.ylh 2021-09-27 15:14:22 +08:00
parent 4c552124ae
commit cb1016c715
5 changed files with 28 additions and 3 deletions

View File

@ -47,7 +47,7 @@ export interface InitialItem {
}
export interface FilterItem {
name: string;
filter: (target: SettingTarget, currentValue: any) => any;
filter: (target: SettingTarget | null, currentValue: any) => any;
}
export interface AutorunItem {
name: string;

View File

@ -0,0 +1,20 @@
import { Node } from '@ali/lowcode-engine';
import { hasOwnProperty, isPlainObject } from '@ali/lowcode-utils';
function isEmptyEvent(event: any) {
return event?.ignored === true;
}
/**
* 使 vu-events-property onClick: { ignored: true }
*/
export function filterEmptyEventReducer(props: any, node: Node): any {
if (!props || !isPlainObject(props)) return props;
// 基于性能考虑,只过滤第一层
Object.keys(props).forEach(name => {
if (name.startsWith('on') && isEmptyEvent(props[name])) {
delete props[name];
}
});
return props;
}

View File

@ -3,9 +3,9 @@ import { Node, PropsReducerContext, designerCabin, engineConfig } from '@ali/low
import { hasOwnProperty } from '@ali/lowcode-utils';
const { TransformStage } = designerCabin;
export function filterReducer(props: any, node: Node, ctx: PropsReducerContext): any {
export function filterReducer(props: any, node: Node, ctx?: PropsReducerContext): any {
// 老的 vision 逻辑是 render 阶段不走 filter 逻辑
if (ctx.stage === TransformStage.Render && !engineConfig.get('visionSettings.enableFilterReducerInRenderStage', false)) {
if (ctx?.stage === TransformStage.Render && !engineConfig.get('visionSettings.enableFilterReducerInRenderStage', false)) {
return props;
}
const filters = node.componentMeta.getMetadata().experimental?.filters;

View File

@ -7,3 +7,4 @@ export * from './style-reducer';
export * from './upgrade-reducer';
export * from './node-top-fixed-reducer';
export * from './reset-loop-default-value-reducer';
export * from './filter-empty-event';

View File

@ -15,6 +15,7 @@ import {
liveLifecycleReducer,
nodeTopFixedReducer,
resetLoopDefaultValueReducer,
filterEmptyEventReducer,
} from './props-reducers';
const { LiveEditing, TransformStage } = designerCabin;
@ -41,6 +42,9 @@ designer.addPropsReducer(liveLifecycleReducer, TransformStage.Render);
designer.addPropsReducer(filterReducer, TransformStage.Save);
designer.addPropsReducer(filterReducer, TransformStage.Render);
designer.addPropsReducer(filterEmptyEventReducer, TransformStage.Save);
designer.addPropsReducer(filterEmptyEventReducer, TransformStage.Render);
// FIXME: Dirty fix, will remove this reducer
designer.addPropsReducer(compatibleReducer, TransformStage.Save);
// 兼容历史版本的 Page 组件