当前位置: 首页 > 网络应用技术

antd Form.Item名称属性没有生效(包括原始分析)

时间:2023-03-06 22:32:08 网络应用技术

  名称属性以form.Item设置,但符合形式的valuesChange尚未生效。简单的代码如下,您可以看到CodeSanbox示例:

  基本形成码如下:

  尝试将上述功能组件写入函数返回组件

  这实际上是一种相对黑克的方法,每次我都执行此功能并返回全新的组件。可能有一些性能问题。

  实际上,官员也提到

  具有名称属性的form.Item包装的控件,表单控件将自动添加值(或ValuePropname指定的其他属性)Onchange(或其他由触发器指定的属性)。数据同步将通过表格接管。这将导致以下结果:

  1.您不再需要或使用Onchange进行数据收集同步(您可以使用Form的OnValueSchange),但是您可以继续收听Onchange事件。

  2.您无法使用属性(例如控制值或默认值控制)设置表单域的值。您可以使用默认值以形式的初始值将其设置。注意,不能通过setState动态更新初始值,您需要使用setFieldSvalue进行更新。

  3.您不应使用setState,可以使用form.setfieldsvalue动态更改表单值。

  但是在上面的基本形成中,我只收到表格和架构参数,因此我没有生效,因此可以将其修改如下:

  就是这样

  问题出现了,ANTD如何注入价值和Onchange?

  问题的答案是:cloneelement()

  将元素元素作为模型克隆和返回新的React元素。CONFIG应包含新的道具,钥匙或参考。返回元素的后背是新道具统一的结果和原始元素的主要道具。

  React.Cloneelement()几乎与:

  以下是伟大神的简单版本。您可以看到它,详细信息

  核心代码的实现如下:

  这是向子组件的支柱的onchange,然后在更改更改时,将通知表单组件以进行相应的更新

  原始:https://juejin.cn/post/7103472687170715684