解决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 相关文章推荐
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
jQuery实现冻结表头的方法
Mar 09 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
react MPA 多页配置详解
Oct 18 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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 高手之路(三)
2006/10/09 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
php 修改密码实现代码
2017/05/24 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python中tell()方法的使用详解
2015/05/24 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python按比例随机切分数据的实现
2019/07/11 Python
python支持多线程的爬虫实例
2019/12/21 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
携程英文网站:Trip.com
2017/02/07 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
会计助理的岗位职责
2013/11/29 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
优秀护士事迹材料
2014/12/25 职场文书
赡养老人协议书范本
2015/08/06 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers