解决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 相关文章推荐
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
JavaScript构造函数详解
Dec 27 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
AngularJS 实现购物车全选反选功能
Oct 24 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
Webpack中loader打包各种文件的方法实例
Sep 03 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
解决await在forEach中不起作用的问题
Feb 25 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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
厨师岗位职责
2013/11/12 职场文书
内容编辑个人求职信
2013/12/10 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
会计岗位职责模板
2014/03/12 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
毕业生自荐信范文
2015/03/05 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers