antdfrom表单getFieldDecorator 传入options的init值没有改变

父组件 自定义对应的from item内容,传入子组件,子组件通过getFieldDecorator来渲染formitem的内容,但是传入的initialValue,并没有改变。

clipboard.png
clipboard.png

clipboard.png

点击第一行的编辑 弹出modal显示内容为1 ,但是点击第二行的编辑 弹出modal的内容还是为1.

但是如果使用注释掉的方法 直接传入initialValue,而不是传入obj的话 弹出modal的内容显示正常

obj中的值已经变成了2了 但是modal中from 显示结果还是1

使用obj不正常,直接使用initialValue 正常

完整代码 链接描述

这是什么原因。。

阅读 3k
2 个回答

好像找到答案了

clipboard.png

这是rc-from的源码 debug到这里,就发现如果field中有值 那么就取一开始的值,而不是我们后来传入的initialValue 值。

所以再次设置数值的时候要对form进行重置操作。resetFields()

我也遇到过这个问题,当时我是这么处理的,添加form的mapPropsToFields

const WrapperModalForm = Form.create<ModalFormProps & FormComponentProps>({
  mapPropsToFields({ renderItem}){
    let result = {};
    renderItem.map(item => {
      result[item.field] = Form.createFormField({ value: item.initialValue})
    })
    return {
      result
    }
  },
})(
  ModalForm
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题