Merge branch 'fix/setter-default-value' into 'release/1.0.0'

fix: 修复setter设置defaultValue不生效的问题

给setter设置defaultValue不生效,因为fusion的输入类组件都是通过 `'value' in props` 来判断是否用 defaultValue ([代码](726db8808a/src/input/input.jsx (L111)))

所以在初始化setter时,判断value为undefined时,则不传value,兼容这种情况

See merge request !1064947
This commit is contained in:
度城 2020-12-01 11:00:46 +08:00
commit 31609d2732
2 changed files with 16 additions and 3 deletions

View File

@ -64,7 +64,7 @@ export function getSettersMap() {
return settersMap;
}
export function createSetterContent(setter: any, props: object): ReactNode {
export function createSetterContent(setter: any, props: Record<string, any>): 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);
}

View File

@ -23,10 +23,18 @@ export const StringSetter = {
},
};
export const NumberSetter = NumberPicker;
export class BoolSetter extends Component {
export class BoolSetter extends Component<any> {
render() {
const { onChange, value, defaultValue } = this.props;
return <Switch checked={value} defaultChecked={defaultValue} onChange={onChange} />;
const props: Record<string, any> = {
defaultChecked: defaultValue,
onChange,
};
// Switch是通过 'checke' in props 来判断是否使用 defaultChecked
if (typeof value !== 'undefined') {
props.checked = value;
}
return <Switch {...props} />;
}
}
export const SelectSetter = Select;