解决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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
Jan 13 Javascript
浅谈 javascript 事件处理
Jan 04 Javascript
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
Vue 监听列表item渲染事件方法
Sep 06 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 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 创建标签云函数代码
2010/05/26 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php学习之变量的使用
2011/05/29 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
使用pdb模块调试Python程序实例
2015/06/02 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
乡下人家教学反思
2014/02/01 职场文书
校园公益广告语
2014/03/13 职场文书
村干部培训方案
2014/05/02 职场文书
北京申奥口号
2014/06/19 职场文书
采购员岗位职责范本
2015/04/07 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
餐厅开业活动方案
2019/07/08 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
pycharm代码删除恢复的方法
2021/06/26 Python
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js