diff --git a/packages/editor-core/src/di/setter.ts b/packages/editor-core/src/di/setter.ts index b4d771f01..488d36bd2 100644 --- a/packages/editor-core/src/di/setter.ts +++ b/packages/editor-core/src/di/setter.ts @@ -64,7 +64,7 @@ export function getSettersMap() { return settersMap; } -export function createSetterContent(setter: any, props: object): ReactNode { +export function createSetterContent(setter: any, props: Record): ReactNode { if (typeof setter === 'string') { setter = getSetter(setter); if (!setter) { @@ -79,5 +79,10 @@ export function createSetterContent(setter: any, props: object): ReactNode { setter = setter.component; } + // Fusion的表单组件都是通过 'value' in props 来判断是否使用 defaultValue + if ('value' in props && typeof props.value === 'undefined') { + delete props.value; + } + return createContent(setter, props); } diff --git a/packages/editor-setters/src/index.tsx b/packages/editor-setters/src/index.tsx index eb2aede5a..79a6a8217 100644 --- a/packages/editor-setters/src/index.tsx +++ b/packages/editor-setters/src/index.tsx @@ -23,10 +23,18 @@ export const StringSetter = { }, }; export const NumberSetter = NumberPicker; -export class BoolSetter extends Component { +export class BoolSetter extends Component { render() { const { onChange, value, defaultValue } = this.props; - return ; + const props: Record = { + defaultChecked: defaultValue, + onChange, + }; + // Switch是通过 'checke' in props 来判断是否使用 defaultChecked + if (typeof value !== 'undefined') { + props.checked = value; + } + return ; } } export const SelectSetter = Select;