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>

这样的写法就行 

 

posted @ 2021-05-27 15:34  ifnk  阅读(1230)  评论(0编辑  收藏  举报