antd state使用_使用antd 的Form组件getFieldDecorator动态设置初始值问题

如图,点击编辑的时候会弹出一个Modal,在Modal中先在Input中显示各自的名称,然后可以修改

<FormItem

label="名称"

{...formItemLayout}

>

{getFieldDecorator('name', {

initialValue:record.name || '',

rules: [{required: true, message: '名称不能为空'}],

})(

<Input  />

)}

</FormItem>

record代表每一行数据

initialValue的record.name值可以设置成功。但修改(单纯改变值而已,还没有ajax请求)之后关闭Modal,然后打开第二个Modal,第二个Modal里面input的值变为第一次修改之后的值,该如何使第二次打开的值显示正常?

情况一:

第一次打开第一个Modal,不修改input退出。然后打开第二个Modal,第二个Modal里面的input显示正常

第一个Modal

第二个Modal

情况二:

第一次打开第一个Modal,修改input退出。然后打开第二个Modal,第二个Modal里面的input显示不正常,里面的值变为一个Modal修改后的值

第一个Modal

第二个Modal:注意此时的input值已经变成第一个Modal里面修改的值

先谢过各位了!

antd 不支持 这种情况。

https://github.com/ant-design…

https://github.com/ant-design…

我们在做的时候也有你这种情况。感觉贼他妈恶心,但是依照antd的说法,只能呵呵了..

我们做的时候是点一次,改变一下model的state,就是给model的state设置一个key为点击时候的时间戳,强制重新渲染组件来实现的

不知道你代码怎么组织的,我简单说下我的做法吧

写一个 FormModal 组件,这个组件包含一个按钮和由自身 state 控制显示的 Modal,接受三个必要参数 buttonText:按钮文本内容

renderForm:想要传入的 form 结构

handleSubmit:Modal 中点击确定的处理函数

每次显示 Modal 时,数据都是新的

可以参考:https://ant.design/components…

Modal 和其他 React 组件一样,有完整的生命周期,重复打开和关闭不会清空你之前填入的数据。你需要手动自行控制数据展现(在打开 Modal 时重设数据),或者像上面一样利用 key 创建一个全新的 Modal 实例。

Form 的 initialValue 和 React 的非受控组件的 defaultValue 是一样的,只有第一次会生效。

可以参考 React 的文档:

https://facebook.github.io/re…

https://facebook.github.io/re…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值