From 4057c062c6eca0cdde68d2292d17cc6796349a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Thu, 17 Feb 2022 16:46:42 +0800 Subject: [PATCH] chore: up --- .../src/components/settings/settings-pane.tsx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 215367588..597575f53 100644 --- a/packages/editor-skeleton/src/components/settings/settings-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-pane.tsx @@ -10,12 +10,6 @@ import { SkeletonContext } from '../../context'; // import { Icon } from '@alifd/next'; import { intl } from '../../locale'; -function transformStringToFunction(str) { - if (typeof str !== 'string') return str; - // eslint-disable-next-line no-new-func - return new Function(`"use strict"; return ${str}`)(); -} - function isStandardComponent(componentMeta: ComponentMeta | null) { if (!componentMeta) return false; const { prototype } = componentMeta; @@ -38,8 +32,9 @@ function isInitialValueNotEmpty(initialValue: any) { } type SettingFieldViewProps = { field: SettingField }; +type SettingFieldViewState = { fromOnChange: boolean; value: any }; @observer -class SettingFieldView extends Component<{ field: SettingField }> { +class SettingFieldView extends Component { static contextType = SkeletonContext; stageName: string | undefined; @@ -150,7 +145,7 @@ class SettingFieldView extends Component<{ field: SettingField }> { // 当前 field 没有 value 值时,将 initialValue 写入 field // 之所以用 initialValue,而不是 defaultValue 是为了保持跟 props.onInitial 的逻辑一致 - if (value === undefined && isInitialValueNotEmpty(initialValue)) { + if (!this.state?.fromOnChange && value === undefined && isInitialValueNotEmpty(initialValue)) { const _initialValue = typeof initialValue === 'function' ? initialValue(field.internalToShellPropEntry()) : initialValue; field.setValue(_initialValue); value = _initialValue; @@ -184,8 +179,10 @@ class SettingFieldView extends Component<{ field: SettingField }> { field: field.internalToShellPropEntry(), // === IO value, // reaction point + initialValue, onChange: (value: any) => { this.setState({ + fromOnChange: true, // eslint-disable-next-line react/no-unused-state value, });