解决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的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
javascript倒计时效果实现
Nov 12 Javascript
jQuery的extend方法【三种】
Dec 14 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
关于vue编译版本引入的问题的解决
Sep 17 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
May 19 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 $_ENV为空的原因分析
2009/06/01 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
python实现五子棋人机对战游戏
2020/03/25 Python
执行Python程序时模块报错问题
2020/03/26 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
个人租房协议书
2014/04/09 职场文书
小学生作文评语大全
2014/04/21 职场文书
学习张林森心得体会
2014/09/10 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
会计简历自我评价
2015/03/10 职场文书
入党积极分子群众意见
2015/06/01 职场文书
Golang 链表的学习和使用
2022/04/19 Golang