解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题


Posted in Javascript onOctober 29, 2020

场景描述:

如下图所示,点击减免天数会出现一个弹窗, 输入天数后点击确定,保存这个值, 但是我在点第二行的减免天数的时候初始应该是空的, 可是现在显示的是第一行输入的值;

解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题

解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题

<Modal
 title="减免天数"
 visible={that.state.visible}
 onOk={that.handleOk.bind(that)}
 onCancel={that.handleCancel}
 >
 <Form horizontal form={form}>
 <FormItem {...{labelCol: { span: 5 }, wrapperCol: { span: 16 }}} label="减免天数:">
 <InputNumber min={0} step={1} {...{style: {width: 120}}} {...getFieldProps('currValue',{

 initialValue: that.state.currInputValue,

 rules: [
  {required: true,message:"减免天数不能为空"}
 ]
 })} />
 </FormItem>
 </Form>
</Modal>

问题分析:

当我们第一次点开Modal的时候, FormItem会得到一个initialValue,但是这个值只在组件挂载的时候执行了一次, 当我们再次打开Modal窗口的时候并不会更新。

好了发现问题所在了, 接下来就是解决了~

解决方法:

Modal窗口我们都有应用一个Visible来控制是否显示, 我们只要利用这个值得变化就可以实现Modal组件的重新挂载了。

{ Visible && <Modal ....../> }

补充知识:antd4中Form组件initialValues设置初始值无效,使用setFieldsValue动态赋值,getFieldsValus动态获取值

首先说明initialValues这个属性,这个属性antd官方给的是设置Form组件初始值,但是有个问题如果值从后端请求那么initialValues可能会设置不上,如果说用匿名组件的话,修改From组件会导致一系列问题,

接下来就是用到了setFieldsValue和getFieldsValus属性

在antd官网中说明form组件不能使用this.setState修改值,

只能通过setFieldsValue来设置,

通过getFieldsValus来获取

首先通过getFieldsValus来动态获取值

export default class List extends Component {
 //第一步
 formRef = React.createRef();
 }

第二步

使用ref

<Form
  {...layout}
  name="basic"
  //这里 formRef在第一步中可以看到
  ref={this.formRef}
  
  //initialValues 设置初始值
  initialValues={this.state.formInitValues}
  //validateMessages 统一处理错误信息
  validateMessages={this.validateMessages}
  //form submit点击之后成功回调
  onFinish={onFinish}
  //form submit点击之后失败回调
  onFinishFailed={onFinishFailed}
 >
 </Form>

使用setFieldsValue

注意:sell_linkman是Form中item的字段名,需要给那个字段赋值用这个就ok,可以写在你事件中

this.formRef.current.setFieldsValue({
 sell_linkman: value,
 })

使用getFieldsValue

‘sell_linkman'是form中item字段名

this.formRef.current.getFieldsValue('sell_linkman')

有什么不懂的欢迎各路大神指正,不懂可以留言。

以上这篇解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 用6N±1法求素数 实例教程
Oct 20 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
jQuery插件实现多级联动菜单效果
Dec 01 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
vue如何实现动态加载脚本
Feb 05 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 #Javascript
解决ant Design Search无法输入内容的问题
Oct 29 #Javascript
js实现随机圆与矩形功能
Oct 29 #Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 #Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 #Javascript
design vue 表格开启列排序的操作
Oct 28 #Javascript
ant design vue导航菜单与路由配置操作
Oct 28 #Javascript
You might like
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
jQuery each()小议
2010/03/18 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
vue实现菜单切换功能
2019/05/08 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
校园餐饮创业计划书
2014/01/10 职场文书
2014年法院工作总结
2014/11/24 职场文书
务虚会发言材料
2014/12/25 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python