解决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 相关文章推荐
jQuery 判断元素上是否绑定了事件
Oct 28 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
调整小数的格式保留小数点后两位
May 14 Javascript
node.js实现逐行读取文件内容的代码
Jun 27 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
微信小程序-详解数据缓存
Nov 24 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
javascript 中的继承实例详解
May 05 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 Javascript
springboot+vue实现文件上传下载
Nov 17 Vue.js
javascript前端实现多视频上传
Dec 13 Javascript
JavaScript的Set数据结构详解
Feb 18 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
filemanage功能中用到的common.js
2007/04/08 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
高三自我鉴定范文
2013/10/19 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
财务担保书范文
2014/04/02 职场文书
六五普法宣传标语
2014/10/06 职场文书
盲山观后感
2015/06/11 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL