解决Antd中Form表单的onChange事件中执行setFieldsValue不生效
Antd中Form表单的onChange事件中执行setFieldsValue不生效
如果在Form表单中onChange事件中,手写了一个setFieldsValue, 则不会生效。
原因是因为
Form表单会在手写的onChange事件之后执行内部的setFieldsValue,所以会将我们之前手写的setFieldsValue给覆盖掉。
解决方案
1. 使用setTimeout延时。此方案不推荐
2. 使用getValueFromEvent. 是当onChange的时候,更改form表单的值的情景下使用
<FormItem label="路由节点" {...nodelayout}> {getFieldDecorator(`node`, { rules: [ { required: true, message: '选择要指定的路由节点', }], getValueFromEvent: (val: any) => { let nodesArr = [] as any; for (let item of transferList) { for (let j of val) { if ((item as any).id === j) { nodesArr.push(item); } } } return nodesArr; } })( <Transfer operations={['>>', '<<']} dataSource={transferList} filterOption={(inputValue: any, option: any) => option.value.indexOf(inputValue) > -1 } showSearch lazy={false} targetKeys={targetKeys} onChange={transferHandleChange} onSearch={transferHandleSearch} render={item => item.value} />, )} </FormItem>
3. 如果你只想简单的更改表单的值setFieldsValue,而不是在onChange的时候触发。那么可以使用normalize. 与上述的getValueFromEvent类似,都是option的一个属性。
antd Design Form setFieldsValue的使用
最近项目使用的是antd Design 4.x 版本,碰到个需要加载后端数据并展示,并且用户可以进行修改的需求,前端采用的是antd的Form表单来实现
组件加载的时候向后端请求数据
componentDidMount() { gainCountry().then(res => { // 这里进行数据请求 ...... }) }
form表单要回填数据一般会想到的是initialValues,但是这是适用于初始化值的时候,官方文档的原话:“initialValues 不能被 setState 动态更新,你需要用 setFieldsValue 来更新”。
搜索一番setFieldsValue的使用,基本上都是:this.props.form.setFieldsValue, props自带form,试用之后发现报错,this.props下没有form,这个好像只适用于antd 3.x
解决
antd4.x 中使用setFieldsValue 是通过ref来进行操作,如下所示:
class Index extends Component{ constructor(props) { super(props) this.state = { } } // 创建一个ref formRef = React.createRef() render(){ return{ {/* 绑定到Form身上*/} <Form ref={this.formRef}> <Form.Item name="example"> <Input /> </Form.Item> </Form> } } } export default BaseInfo
在需要的地方进行使用:
// example 为Form.Item中的name this.formRef.current.setFieldsValue({ example: ‘从后台返回要显示的值', })
结束语
官方文档中都是有相关说明的,setFieldsValue 的使用我是在文档中的一个例子中找到的,碰到问题的时候还是要多阅读文档
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。
原文出处:https://blog.csdn.net/SpicyBoiledFish/article/details/108225
相关文章
- 这篇文章主要给大家介绍了关于c# winform异步不卡界面的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用c#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了解决Antd Table表头加Icon和气泡提示的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
- 这篇文章主要介绍了C#在Winform开发中使用Grid++报表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#中winform使用相对路径读取文件的方法,实例分析了C#使用相对路径读取文件的技巧与实际应用,需要的朋友可以参考下...2020-06-25
antd Form组件方法getFieldsValue获取自定义组件的值操作
这篇文章主要介绍了antd Form组件方法getFieldsValue获取自定义组件的值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29- 在工作中遇到这样一个问题,在系统使用过程中,输入法会变灰导致无法使用输入法输入文字,就好像输入法被禁用了没有启用似的。对此,在这里做个备录...2020-06-25
- 本篇文章是对C#中WinForm控件之Dock顺序调整进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式...2020-06-25
C# Winform 调用系统接口操作 INI 配置文件的代码
封装了一小段代码, 调用系统接口, 操作配置文件. 一般用于 .ini 文件, 或者其它键值对格式的配置文件...2020-06-25- 这篇文章主要为大家详细介绍了jquery插表单件form使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
- 这篇文章主要介绍了Yii2创建表单(ActiveForm)的方法,结合实例形式详细分析了Yii创建表单的详细步骤及相关函数与属性的使用技巧,需要的朋友可以参考下...2016-07-29
- 这篇文章主要介绍了Winform中Treeview实现按需加载的方法,针对大数据量的情况下非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C# Winform中实现主窗口打开登录窗口关闭的方法,这在需要用户名密码的软件项目中是必用的一个技巧,要的朋友可以参考下...2020-06-25
- 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。这篇文章主要介绍了WinForm 进程、线程的相关资料,需要的朋友可以参考下...2021-09-22
C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法
这篇文章主要介绍了C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法,结合实例形式分析了WinForm图片重叠后造成图片不透明的原因与相应的解决方法,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了WinForm实现状态栏跑马灯效果的方法,涉及WinForm控件结合时间函数动态操作元素属性的相关技巧,需要的朋友可以参考下...2020-06-25
- 本文介绍了个人的《零压健身房管理系统(扁平化)》的基本流程和功能点的介绍,虚心接受各位的意见,欢迎在提出宝贵的意见,大家一起探讨学习...2021-09-26
关于C#.net winform程序验证moss的集成身份认证实例
因为网站使用的是windows集成认证,所以遇到了权限问题,需要输入密码。使操作和用户体验非常不方便,研究了好久没有找到好的方法,最后终于让我踏破铁鞋总结出了下面的方法...2020-06-25- winform调用javascript的小例子,需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了WinForm特效之桌面上的遮罩层实现方法,是一个非常实用的技巧,需要的朋友可以参考下...2020-06-25