添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

antd Form组件的onValuesChange回调,在通过form.setFieldValue / form.setFieldsValue api修改时,不会触发。

可以看github上antd问题模块

官方给的的理由是:如果不这样可能会导致死循环

from.validateFields((err, val)=> {}) // 无响应 发现无响应, 无报错, 完全蒙逼了, 排查良久, 添加校验字段后发现可以成功校验, 于是想着大不了我全部手动添加字段名校验, 终于, 错误的原因浮现出来了 from.validateFields([n 记住:setFieldsValue的字段要对应得上 解决 antd Form 组件 setFieldsValue的警告 使用 antd Form 组件 setFieldsValue可能会出现You cannot set a form field before rendering a field associated with the value.警告,字面意义去看是说在 render之前设置了表单值的 问题 。 在使用setFieldsValue给表单 Form 的某一个filed赋值时,可能掺杂了非表单控件中的字段, Form 表单在赋值和渲染时发现有些字段无法渲染在现有的字段(因为不存在),所以就会报出这 在 antd 中 有时候 还是会碰见这样得 问题 得,但是 antd 已经帮我们封装好了, 通过 form 表单来控制 各个表单元素 ,当我们想要监控某一个表单的变化的时候 发现不好搞了 最近有个小需求 就是 监听表单中 单选框值得变化 来 触发 一些 效果,这样的话就要求你要知道 每次值发现改变的回调了 在 配置的时候 有一个api方法 可以用来 监控变化 以及变化后的值 on Values Change 字段值更新时 触发 回调事件 function( change d Values , all Values ) onFieldsCha js动态改变input的value 不 触发 on change 事件解决办法<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <meta http-equiv="Content-Type" content="text/htm < Form .Item label=作用对象> {getFieldDecorator('targetId', { initialValue: this.state.targetId }, { rules: [{ required: false, message: '作用对象' <Select placeholder=请选择作用对象> {targetList.map(entity => <Option key={enti 触发 select1, 触发 select2,再 触发 select1,此时select2里面的值变成了上次一选中的value 值,而不会被清空。 解决办法: 使用Select 里面的value属性,来进行清空 < Form style={{padding:'20px','boxSizing':'border-box'}}> <Select defaultValue={packag 在添加的表单中,默认值一般都为空,或者是真假状态的,所以说为 Form 的 initial Values 属性内的表单项的字段名称对应的值设为空的字符串,或者false默认的radio单选初始值即可。在打开编辑时显示的自然是当前编辑的这项的所有状态,接着还是在 on Values Change 中使用一个状态拿到最新的更改后的数据提交编辑即可。编辑时的初始值为当前编辑项,所以直接可直接将当前编辑项的整个对象数据放入initial Values 属性中当做值即可。all Values 为整个最新的状态的表单对象。