From f28785d53c514520ed89bc83282a469a92c44ce4 Mon Sep 17 00:00:00 2001 From: kangwei Date: Sat, 9 May 2020 17:34:02 +0800 Subject: [PATCH] fix getHotvalue --- .../designer/src/designer/setting/setting-field.ts | 5 ++++- .../src/designer/setting/setting-prop-entry.ts | 14 ++------------ .../designer/src/document/node/node-children.ts | 4 ++++ packages/editor-core/package.json | 4 ++-- packages/react-renderer/src/engine/index.jsx | 5 +++-- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index b0b722d22..0d86208f9 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -3,6 +3,7 @@ import { Transducer } from './utils'; import { SettingPropEntry } from './setting-prop-entry'; import { SettingEntry } from './setting-entry'; import { computed, obx } from '@ali/lowcode-editor-core'; +import { cloneDeep } from '@ali/lowcode-utils'; export class SettingField extends SettingPropEntry implements SettingEntry { readonly isSettingField = true; @@ -118,7 +119,8 @@ export class SettingField extends SettingPropEntry implements SettingEntry { // ======= compatibles for vision ====== getHotValue(): any { - let v = this.getValue(); + // avoid View modify + let v = cloneDeep(this.getValue()); if (v == null) { v = this.extraProps.defaultValue; } @@ -127,6 +129,7 @@ export class SettingField extends SettingPropEntry implements SettingEntry { setHotValue(data: any) { this.setValue(this.transducer.toNative(data)); + this.valueChange(); } onEffect(action: () => void): () => void { diff --git a/packages/designer/src/designer/setting/setting-prop-entry.ts b/packages/designer/src/designer/setting/setting-prop-entry.ts index 2e11f82b5..ac241ec05 100644 --- a/packages/designer/src/designer/setting/setting-prop-entry.ts +++ b/packages/designer/src/designer/setting/setting-prop-entry.ts @@ -62,14 +62,6 @@ export class SettingPropEntry implements SettingEntry { this.isSingle = parent.isSingle; this.designer = parent.designer; this.top = parent.top; - - autorun(({ firstRun }) => { - const value = this.getValue(); - if (firstRun) { - return; - } - this.emitter.emit('valuechange', value); - }); } getId() { @@ -180,11 +172,11 @@ export class SettingPropEntry implements SettingEntry { return this.top; } - // add settingfield props + // add settingfield props get props() { return this.top; } - + onValueChange(func: () => any) { this.emitter.on('valuechange', func); @@ -197,8 +189,6 @@ export class SettingPropEntry implements SettingEntry { * @deprecated */ valueChange() { - console.warn('valueChange deprecated'); - this.emitter.emit('valuechange'); } diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index 43701b4ba..9d4ea42cc 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -217,6 +217,10 @@ export class NodeChildren { return this.children.some((child, index) => fn(child, index)); } + filter(fn: (item: Node, index: number) => item is Node) { + return this.children.filter(fn); + } + mergeChildren(remover: () => any, adder: (children: Node[]) => NodeData[] | null, sorter: () => any) { let changed = false; if (remover) { diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 82795c84c..54da107a4 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -18,8 +18,8 @@ "@ali/lowcode-types": "^0.8.2", "@ali/lowcode-utils": "^0.8.3", "@alifd/next": "^1.19.16", - "@recore/obx": "^1.0.8", - "@recore/obx-react": "^1.0.7", + "@recore/obx": "^1.0.9", + "@recore/obx-react": "^1.0.8", "classnames": "^2.2.6", "debug": "^4.1.1", "intl-messageformat": "^8.3.1", diff --git a/packages/react-renderer/src/engine/index.jsx b/packages/react-renderer/src/engine/index.jsx index cf487549f..6ddcf8907 100644 --- a/packages/react-renderer/src/engine/index.jsx +++ b/packages/react-renderer/src/engine/index.jsx @@ -122,9 +122,10 @@ export default class Engine extends PureComponent { const originRender = Component.prototype.render; Component.prototype.render = function () { if (this.state && this.state.engineRenderError) { - return engine.createElement(this.getFaultComponent(), { + this.state.engineRenderError = false; + return engine.createElement(engine.getFaultComponent(), { + ...this.props, error: this.state.error, - props: this.props, }); } return originRender.call(this);