diff --git a/package.json b/package.json index 7f8e3bcb8..1f05922cd 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "setup:test": "./scripts/setup-for-test.sh", "setup:skip-build": "./scripts/setup-skip-build.sh", "start": "./scripts/start.sh", - "start:demo": "./scripts/start.sh @ali/lowcode-demo", "test": "lerna run test --stream", "test:snapshot": "lerna run test:snapshot", "watchdog:build": "node ./scripts/watchdog.js", diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 229df2ceb..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,9 +145,10 @@ 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; } let _onChange = extraProps?.onChange; @@ -183,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, }); diff --git a/packages/shell/src/setting-prop-entry.ts b/packages/shell/src/setting-prop-entry.ts index 53229c2b1..e97560a14 100644 --- a/packages/shell/src/setting-prop-entry.ts +++ b/packages/shell/src/setting-prop-entry.ts @@ -124,6 +124,14 @@ export default class SettingPropEntry { this[settingPropEntrySymbol].setPropValue(propName, value); } + /** + * 清空指定属性值 + * @param propName + */ + clearPropValue(propName: string | number) { + this[settingPropEntrySymbol].clearPropValue(propName); + } + /** * 获取配置的默认值 * @returns