vue jsx 表单 v-decorator 的错误
原来是这样写
<a-form-item label='计量单位' label-col={formConfig.labelCol} wrapper-col={formConfig.wrapperCol}> <a-select placeholder={'请选择计量单位'} v-decorator={[ 'unit', { initialValue: undefined, rules: [{ required: true, message: '请选择计量单位' }], }, ]}> {this.unit.map(x => (<a-select-option value={x.id}>{x.name}</a-select-option>))} </a-select> </a-form-item>
这样 页面 会 先 于 传进来 的 record 赋值 ,报
Warning: You cannot set a form field before rendering a field associated with the value. You can use `getFieldDecorator(id, options)` instead `v-decorator="[id, options]"` to register it before render.
警告:在呈现与该值关联的字段之前,您无法设置表单字段。 您可以使用`getFieldDecorator(id,options)`代替`v-decorator =“ [id,options]”`在渲染之前进行注册。
这个时候 只需要 去掉 v-decorator =“ [id,options] " 改成
<a-form-item label='提前到场天数' label-col={formConfig.labelCol} wrapper-col={formConfig.wrapperCol} > { this.form.getFieldDecorator('presentDays', { initialValue: null, rules: [ { pattern: /^[1-9]\d*$/, message: '请输入正确数字' }, { required: true, message: '请输入数字' }, ], })( <a-input-number style='width:100%' min={0} precision={0} placeholder={'请输入提前到场天数'} />, ) } </a-form-item>
这样的写法就行