From 94d8080fe9863ad97c0c0c70ff4b1e1c9c7bcdb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=A3=E5=BD=AC?= Date: Wed, 2 Jun 2021 11:09:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Evision=20engineconfig?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E7=A6=81=E7=94=A8=E6=9F=90=E4=BA=9B?= =?UTF-8?q?reducer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-core/package.json | 2 ++ packages/editor-core/src/config.ts | 6 ++++-- packages/engine/src/engine-core.ts | 7 +++++++ .../src/props-reducers/downgrade-schema-reducer.ts | 7 ++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 5ee8a0656..9c9a1c345 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -21,6 +21,7 @@ "classnames": "^2.2.6", "debug": "^4.1.1", "intl-messageformat": "^9.3.1", + "lodash.get": "^4.4.2", "power-di": "^2.2.4", "react": "^16", "react-dom": "^16.7.0", @@ -29,6 +30,7 @@ "devDependencies": { "@alib/build-scripts": "^0.1.18", "@types/classnames": "^2.2.7", + "@types/lodash.get": "^4.4.6", "@types/node": "^13.7.1", "@types/react": "^16", "@types/react-dom": "^16", diff --git a/packages/editor-core/src/config.ts b/packages/editor-core/src/config.ts index c81869a1f..5a8056147 100644 --- a/packages/editor-core/src/config.ts +++ b/packages/editor-core/src/config.ts @@ -1,3 +1,5 @@ +import lodashGet from 'lodash.get'; + export class EngineConfig { private config: { [key: string]: any } = {}; @@ -17,8 +19,8 @@ export class EngineConfig { return this.config[key] !== undefined; } - get(key: string): any { - return this.config[key]; + get(key: string, defaultValue?: any): any { + return lodashGet(this.config, key, defaultValue); } set(key: string, value: any) { diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index ee956bbe3..1277f289d 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -195,6 +195,13 @@ interface EngineOptions { * 关闭画布自动渲染,在资产包多重异步加载的场景有效 */ disableAutoRender?: boolean; + /** + * Vision-polyfill settings + */ + visionSettings?: { + // 是否禁用降级Reducer + disableCompatibleReducer?: boolean; + } [key: string]: any; } diff --git a/packages/vision-polyfill/src/props-reducers/downgrade-schema-reducer.ts b/packages/vision-polyfill/src/props-reducers/downgrade-schema-reducer.ts index 1477971bb..dcb395d34 100644 --- a/packages/vision-polyfill/src/props-reducers/downgrade-schema-reducer.ts +++ b/packages/vision-polyfill/src/props-reducers/downgrade-schema-reducer.ts @@ -3,8 +3,13 @@ import { } from '@ali/lowcode-utils'; import { isJSExpression, isJSSlot } from '@ali/lowcode-types'; import { Node } from '@ali/lowcode-designer'; +import { engineConfig } from '@ali/lowcode-editor-core'; export function compatibleReducer(props: any, node: Node): any { + // 如果禁用了降级reducer,则不做处理 + if (engineConfig.get('visionSettings.disableCompatibleReducer')) { + return props; + } // 如果不是 vc 体系,不做这个兼容处理 if (!node.componentMeta.prototype) { return props; @@ -27,7 +32,7 @@ export function compatibleReducer(props: any, node: Node): any { }, }; } - if (isJSExpression(props) && !props.events) { + if (!props.events && isJSExpression(props)) { return { type: 'variable', value: props.mock,