diff --git a/migrate-from-v1.md b/migrate-from-v1.md index a4c1b34b98..2f90cf0a42 100644 --- a/migrate-from-v1.md +++ b/migrate-from-v1.md @@ -177,6 +177,7 @@ - 增加 initialValues,用于设置表单初始值,同时用于表单的重置 - 增加 name 属性 #### Form.Item +- 移除 labelWidth, 通过 --nutui-form-item-label-width 控制宽度 - 增加 required,用于必选样式控制 - 增加 trigger,用于设置数据更新的时机 - 增加 valuePropName ,用于收集子组件受控的属性映射 diff --git a/src/packages/form/demo.taro.tsx b/src/packages/form/demo.taro.tsx index 7e99ebba11..ba9846efd1 100644 --- a/src/packages/form/demo.taro.tsx +++ b/src/packages/form/demo.taro.tsx @@ -67,6 +67,14 @@ interface T { tagTip: string male: string female: string + input: string + checkboxGroup: string + option: string + radio: string + radioGroup: string + radioOption: string + picker: string + select: string } const FormDemo = () => { @@ -116,6 +124,14 @@ const FormDemo = () => { tagTip: '请输入标注', male: '男性', female: '女性', + input: '输入框', + checkboxGroup: '复选按钮分组', + option: '选项', + radio: '单选按钮', + radioGroup: '单选按钮分组', + radioOption: '选项', + picker: '选择器', + select: '请选择', }, 'en-US': { basic: 'Basic Usage', @@ -163,6 +179,14 @@ const FormDemo = () => { tagTip: 'Please enter tag', male: 'Male', female: 'Female', + input: 'Input', + checkboxGroup: 'Checkbox.Group', + option: 'Option', + radio: 'Radio', + radioGroup: 'Radio.Group', + radioOption: 'radio', + picker: 'Picker', + select: 'Please select', }, }) const [state, SetState] = useState({ @@ -401,6 +425,7 @@ const FormDemo = () => {

{translated.title5}

{ onFinish={(values) => submitSucceed(values)} onFinishFailed={(values, errors) => submitFailed(errors)} > - - + + - + - - + + - + - - + + - - Radio 1 + + {translated.radioOption} 1 - + - Radio 1 - Radio 2 + {translated.radioOption} 1 + {translated.radioOption} 2 - - + + - + args[1]} @@ -472,7 +505,7 @@ const FormDemo = () => { value.length ? pickerOptions.filter((po) => po.value === value[0])[0] ?.text - : 'Please select' + : translated.select } extra={} align="center" @@ -482,14 +515,14 @@ const FormDemo = () => { { @@ -111,6 +119,14 @@ const FormDemo = () => { tagTip: '请输入标注', male: '男性', female: '女性', + input: '输入框', + checkboxGroup: '复选按钮分组', + option: '选项', + radio: '单选按钮', + radioGroup: '单选按钮分组', + radioOption: '选项', + picker: '选择器', + select: '请选择', }, 'en-US': { basic: 'Basic Usage', @@ -158,6 +174,14 @@ const FormDemo = () => { tagTip: 'Please enter tag', male: 'Male', female: 'Female', + input: 'Input', + checkboxGroup: 'Checkbox.Group', + option: 'Option', + radio: 'Radio', + radioGroup: 'Radio.Group', + radioOption: 'radio', + picker: 'Picker', + select: 'Please select', }, }) @@ -357,6 +381,7 @@ const FormDemo = () => {

{translated.title5}

{ onFinish={(values) => submitSucceed(values)} onFinishFailed={(values, errors) => submitFailed(errors)} > - - + + - + - - + + - + - - + + - - Radio 1 + + {translated.radioOption} 1 - + - Radio 1 - Radio 2 + {translated.radioOption} 1 + {translated.radioOption} 2 - - + + - + args[1]} @@ -428,7 +461,7 @@ const FormDemo = () => { value.length ? pickerOptions.filter((po) => po.value === value[0])[0] ?.text - : 'Please select' + : translated.select } extra={} align="center" @@ -438,7 +471,7 @@ const FormDemo = () => { { return ( <> { return ( <> { return ( <> { return ( <> { - const { - label, - name, - required, - className, - style, - labelWidth, - errorMessageAlign, - } = { + const { label, name, required, className, style, errorMessageAlign } = { ...defaultProps, ...this.props, } @@ -173,12 +160,7 @@ export class FormItem extends React.Component< } > {label ? ( -
+
{renderLabel}
) : null} diff --git a/src/packages/formitem/formitem.tsx b/src/packages/formitem/formitem.tsx index d7b23b6e11..35ba50e4b8 100644 --- a/src/packages/formitem/formitem.tsx +++ b/src/packages/formitem/formitem.tsx @@ -3,7 +3,6 @@ import { BaseFormField } from './types' import { Context } from '../form/context' import Cell from '@/packages/cell' import { BasicComponent, ComponentDefaults } from '@/utils/typings' -import { pxCheck } from '@/utils/px-check' import { isForwardRefComponent } from '@/utils/is-forward-ref-component' type TextAlign = @@ -17,7 +16,6 @@ type TextAlign = export interface FormItemProps extends BasicComponent, BaseFormField { required: boolean - labelWidth: number initialValue: any trigger: string valuePropName: string @@ -35,7 +33,6 @@ const defaultProps = { name: '', label: '', rules: [{ required: false, message: '' }], - labelWidth: 90, errorMessageAlign: 'left', } as FormItemProps @@ -79,7 +76,7 @@ export class FormItem extends React.Component< const { setFieldsValue, getFieldValue } = this.context const { name } = this.props - if (this.props.initialValue === undefined) { + if (children?.props?.defaultValue) { console.warn('通过 initialValue 设置初始值') } const controlled = { @@ -134,15 +131,7 @@ export class FormItem extends React.Component< } renderLayout = (childNode: React.ReactNode) => { - const { - label, - name, - required, - className, - style, - labelWidth, - errorMessageAlign, - } = { + const { label, name, required, className, style, errorMessageAlign } = { ...defaultProps, ...this.props, } @@ -171,12 +160,7 @@ export class FormItem extends React.Component< } > {label ? ( -
+
{renderLabel}
) : null}