问题

[antd: Form.Item] defaultValue will not work on controlled Field. You should use initialValues o

原因:antd禁止在form.item下的组件使用默认属性
解决办法:删除defaultValue,在中使用initialValue={{ parentId: parentId }}代替,如果要动态更新 parentId的值,又会导致下面的问题

React does not recognize the initialValue prop on a DOM element.

**原因:**不能通过这种方法更新parentId的值,想要更新props中的值,要通过form.setFieldsValue({ parentId: parentId })进行更改,

你不能用控件的 value 或 defaultValue 等属性来设置表单域的值,默认值可以用 Form 里的 initialValues 来设置。注意 initialValues 不能被 setState 动态更新,你需要用 setFieldsValue 来更新。

由上可知,表单中不能设置默认值,要想设置默认值必须通过form中的initial Values进行设置,但是其又不能动态更新,想要达到动态更新的效果必须使用form中的setFieldsValue进行更新,需要检测parentId的变化从而对parentId进行修改,固需要在useEffect中使用setFieldsValue

如果需要在父组件中得到子组件的form表单中的值,可以通过函数传参的方式,将子组件的form对象传递给父组件,这样父组件得到子组件的form对象,就可以通过getFieldValue得到表单的值了。

    const [form] = Form.useForm()//将子组件的form传递给父组件,使得父组件可以取到子组件form中的categorieName的值props.setForm(form)// 动态更新parentId的值useEffect(() => {form.setFieldsValue({ parentId: parentId })}, [parentId])
import React, { Fragment, useEffect } from 'react'
import { Form, Input, Select } from 'antd'
import { useForm } from 'antd/lib/form/Form';const { Option } = Select;export default function AddForm(props) {const { categorys, parentId } = propsconst [form] = Form.useForm()console.log(parentId)// 动态更新parentId的值useEffect(() => {form.setFieldsValue({ parentId: parentId })}, [parentId])return (<Fragment>{/* initialValues不能被动态更新,需要使用form.setFieldsValues进行动态更新,将其放在useEffect中 */}<Form form={form}><span>所属分类</span><Form.Itemname="parentId"rules={[{required: true,message: 'Please select category!',},]}>{/* 表单中不能使用默认属性defaultValue,在form中使用initialValues{{}}代替 */}<Select ><Option value='0'>一级分类</Option>{categorys.map(c => <Option key={c._id} value={c._id}>{c.name}</Option>)}</Select></Form.Item><span>分类名称</span><Form.Itemname="categoryName"rules={[{required: true,message: 'Please input your categoryName!'}]}><Input placeholder="添加分类" /></Form.Item></Form></Fragment >)
}

动态更新initialValue的值相关推荐

  1. django 动态更新属性值

    django 动态更新属性值 class TestTime(models.Model):"""功能说明:指定测试的每一关总用时"""test ...

  2. chosen.jquery.js 、chosen-select 源码修改控制 chosen:updated 方法动态更新下拉框选项不更新搜索框值 ,chosen 实现远程搜索加载下拉选项

    chosen.jquery.js .chosen-select 源码修改控制 chosen:updated 方法动态更新下拉框选项不更新搜索框值,chosen 实现远程搜索加载下拉选项 chosen. ...

  3. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)

    题意: 给你一棵树,问树上所有两点路径上的(最大值最小值乘积)之和. 题解: 很明显的一个点分治问题,然后就是个二维偏序问题了(虽然我也不知道啥是二维偏序). 点分治不难,重点是点分治内cal函数如何 ...

  4. Centos DNS服务(二)-bind主从配置与基于TSIG加密的动态更新

    DNS的主从配置 DNS从服务器也叫辅服DNS服务器,如果网络上某个节点只有一台DNS服务器的话,首先服务器的抗压能力是有限的,当压力达到一定的程度,服务器就可能会宕机罢工, 其次如果这台服务器出现了 ...

  5. h5 数字变化_前端/h5 D3.js实现根据数据动态更新图形/类似进度实时变化效果

    最近接到一个需求,在满足规则下,实现类似这种展示效果,其实就是用图形反映数据(NK,一种干扰值) 运行后,它其实是不断在动的,每格都可能显示灰色或者彩色 这里一共是10个格子,每格代表一个范围边界,说 ...

  6. html.编辑数据回显,从HTML表格编辑/更新MySQL数据库值

    我有一个表单,目前提交值到MySQL数据库.在每次提交完成后,刚刚插入到mysql数据库的数据将在表单下回显.该表格具有动态输入字段.我知道想要添加编辑以前插入的值的可能性.我放置了一个编辑按钮,将用 ...

  7. iOS之深入解析如何构建动态库与framework动态更新

    一.动态库的构建步骤 ① 创建动态库 创建一个动态库 MyDynamicFramework: 创建一个测试类: 在 MyDynamicFramework.h(默认生成,可统一暴露头文件) 中 #imp ...

  8. Nacos支持配置的动态更新

    // 注入配置文件上下文 @Autowired private ConfigurableApplicationContext applicationContext;@GetMapping(value ...

  9. ElasticSearch探索之路(五)集群与分片:选举、动态更新、近实时搜索、事务日志、段合并

    文章目录 集群内部原理 集群与节点 分片 选举 分片内部原理 索引不变性 动态更新索引 近实时搜索 事务日志 段合并 集群内部原理 集群与节点 一个运行中的Elasticsearch实例称为一个节点, ...

最新文章

  1. 全景分割:CVPR2019论文解析
  2. 一对一培训之视频免费分享-2018-01-21-第 03 阶段-准备-基础-架构-01
  3. 上周热点回顾(10.1-10.7)
  4. Sitecore7.5 安装指南 -- 从.EXE文件安装Sitecore CMS
  5. 2.4 万余门在线课程免费开放!大量计算机相关课程.(赶紧收藏)
  6. Node.js 应用故障排查手册 —— Node.js 性能平台使用指南
  7. python多版本共存问题
  8. 空间数据引擎oracle_空间数据库oracle
  9. Mercurial的Git客户端 gitifyhg
  10. 2019-11-26 https://raw.githubusercontent.com和谐/gfwlist/gfwlist/master/gfwlist.txt
  11. java怎么与数据库连接?
  12. 流程图软件,visio,安装下载教程
  13. 高等数学:第七章 空间解析几何(2)数量积 向量积 混合积 曲面及其方程
  14. 解决每次打开office都提示windows正在配置visio的问题以及office2013闪退问题
  15. SpringCLoud+redis+es高并发项目《九》(Spring Security Oauth2 JWT)
  16. windows网络和共享中心“查看基本网络信息并设置连接”为“未知”的解决方案...
  17. 【my eclipse tips】Could not create the view: An unexpected exception was thrown问题
  18. 软件测试的14种类型
  19. Fail2Ban 简介与使用
  20. char[4]转int或int转char

热门文章

  1. android友盟埋点,友盟数据埋点前,你要知道这些
  2. centos 拨号上网
  3. 解决eso搜索优化问题 Vue 有对应的 Nuxt.js。
  4. jquery-js 美化页面
  5. JAVA从入门到起飞
  6. Intellij IDEA Spring Configuration check
  7. 数据库之OrmLite的简单学习:增删改查_两个表
  8. [Chromium中文文档]Chrom{e,ium}{,OS}中的硬件视频加速
  9. TypeError: unsupported operand type(s) for //: ‘str‘ and ‘int‘
  10. PCB学习笔记——DRC检查