diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index 1ed7b3757..aeb65899c 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -311,26 +311,30 @@ designer.addPropsReducer(stylePropsReducer, TransformStage.Render); // 国际化 & Expression 渲染时处理 designer.addPropsReducer(deepValueParser, TransformStage.Render); -designer.addPropsReducer((props: any, node: Node) => { - if (node.isRoot()) { - if (props.dataSource) { - const online = cloneDeep(props.dataSource.online); - online.forEach((item: any) => { - const newParam: any = {}; - if (item.options && item.options.params && item.options.params.length) { - item.options.params.map((element: any) => { - if (element.name && element.value) { - newParam[element.name] = element.value; - } - }); - item.options.params = newParam; - } - }); - props.dataSource.list = online; - } +// 清除空的 props value +function removeEmptyProps(props: any, node: Node) { + if (node.isRoot() && props.dataSource) { + const online = cloneDeep(props.dataSource.online); + online.forEach((item: any) => { + const newParam: any = {}; + if (Array.isArray(item?.options?.params)) { + item.options.params.forEach((element: any) => { + if (element.name) { + newParam[element.name] = element.value; + } + }); + item.options.params = newParam; + } + }); + props.dataSource.list = online; } return props; -}, TransformStage.Render); +} + +// Init 的时候没有拿到 dataSource, 只能在 Render 和 Save 的时候都调用一次,理论上执行时机在 Init +// Render 和 Save 都要各调用一次,感觉也是有问题的,是不是应该在 Render 执行一次就行了?见上 filterReducer 也是一样的处理方式。 +designer.addPropsReducer(removeEmptyProps, TransformStage.Render); +designer.addPropsReducer(removeEmptyProps, TransformStage.Save); skeleton.add({ area: 'mainArea', diff --git a/packages/rax-render/src/utils/index.ts b/packages/rax-render/src/utils/index.ts index 91676ba49..1cbd6df47 100644 --- a/packages/rax-render/src/utils/index.ts +++ b/packages/rax-render/src/utils/index.ts @@ -700,7 +700,6 @@ export function parseExpression(str, self) { if (inSameDomain() && window.parent.__newFunc) { return window.parent.__newFunc(tarStr)(self); } - console.log('aaaaaaaa') return new Function(tarStr)(self); } catch (err) { debug('parseExpression.error', err, str, self);