首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应动态更新

反应动态更新
EN

Stack Overflow用户
提问于 2021-12-21 22:22:11
回答 1查看 34关注 0票数 0

我有一种动态。但是当我更新它时,它总是覆盖它,所以它不会添加新的键和值。例如:

代码语言:javascript
复制
const [DynamicForm, setDynamicForm] = useState({});


 <Input placeholder={element.Name}
          onChange={(e) => {
          updateDynamicForm(e.target.value, field.Id);
          }}
          />

const updateDynamicForm = (value, Id) => {
      setDynamicForm({ ...DynamicForm, [Id]: value });
      form.setFieldsValue({ [Id]: value });
    
  };

我用了3-4次的动态输入。

这就是我想要的=>

代码语言:javascript
复制
{15:"Input 1 Text example", 16:"Input 2 Text example"} //15 and 16 is Id that i give it on change event.

这就是我得到的=>

代码语言:javascript
复制
{15:"Input 1 Text example"}  //After i edit input 2 that object becomes => {16:"Input 2 Text Example"}

我的密码出了什么问题我真的很困惑。谢谢你的回复!

EN

回答 1

Stack Overflow用户

发布于 2021-12-21 23:02:33

好的,我有反设计表单的经验,一般来说,你做错了(并不总是,但很有可能)。表单状态不应该是表单的外部,它应该包含在表单中。一旦开始对表单状态进行外部化,就会遇到一些问题,试图在各种情况下使外部状态与实际窗体状态保持同步。

为了让组件对表单状态的更改作出反应,请使用:

代码语言:javascript
复制
<Form.Item dependencies={[...names of fields}]>
 {(getFieldValue) => {
     return /* any jsx you want */
 }}
</Form.Item>

您的表单应该包装在一个Form组件中,每个输入/选择/收音机/任何东西都应该包装在一个Form.Item中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70442203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档