如何在状态中存储多个反应表单数据

特乌姆

我有一个页面,用户可以在其中提交表单。他们可以选择向页面添加新表单(相同表单类型的表单 2、3、4、5)。

我通过以下方式处理:

handleAddPastMainData() {
  const pastMainData = this.state.mainData[0].pastMainData;

  this.setState({
    mainData: {
      ...this.state.mainData,
      pastMainData: pastMainData.push([])
    }
  })
}

然后我通过pastMainData映射以显示添加的表单。

由于表单是嵌套的,我遇到的挑战是用于保存数据的处理程序。

我现在的状态是这样的:

this.state = {
  mainData: [
    {pastMainData: []},
  ]
};

我的处理程序是:

handleMainInputChange = (event) => {
  const name = event.target.name;
  const value = target.type === 'checkbox' ? target.checked : target.value;

  this.setState(state => {
    state.mainData[0].pastMainData[name] = value;
    return state
  })
};

我的应用程序中的示例表单输入字段是:

<Field
  label="Main name"
  id="pastMainName"
  name="pastMainName"
  placeholder="Super Awesome FName"
  value={state.MainData[0].pastMainData.pastMainName}
  onChange={handleMainInputChange}
/>

当我映射到pastMainData时,我为每个表单分配一个键

因此用户可以选择添加超过 5 个上述字段输入并提交。

提交数据后,我希望状态如下所示:

this.state = {
  mainData: [
    {pastMainData: [[field1], [field2], [field3]},
  ]
};

当用户返回时,这让我可以选择检查用户已经完成的字段/表单的数量,并使用保存的数据呈现它们。

然而,这显然行不通。任何改进我的代码并使其更有效率的方法将不胜感激。

谢谢

圣莫利

目前,当我运行代码时,单击“添加表单”时,它会呈现表单但会继续到下一页。继续到下一页的调用仅在 handleSubmit 方法上。

要阻止它继续到下一页,您可能需要点击e.preventDefault()该按钮。

“由于表单是多个,我如何获取密钥并在 handleMainInputChange 中使用该特定密钥。”

将键添加到字段或表单。例如:

<Field
  key={key}
  label="Main name"
  id="pastMainName"
  name="pastMainName"
  placeholder="Super Awesome FName"
  value={state.MainData[0].pastMainData.pastMainName}
  onChange={handleMainInputChange}
/>

并且您应该能够像访问任何数据属性一样访问它,如果没有,您可以将它作为 aa 参数传递给onChange函数。

此外,也许为您的状态 obj 使用不同的数据结构会更容易:

this.state = {
  forms: {
    form1: {},
    form2: {},
    form3: {},
  }
};

从长远来看,可能会使设置和访问更容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Codeigniter中更新表单数据

来自分类Dev

如何在Codeigniter中获取提交的表单数据?

来自分类Dev

如何在CakePHP中插入多个表单数据作为数据库中的新行

来自分类Dev

如何在meanjs中存储ng-repeat数组表单数据?

来自分类Dev

表单数据的本地存储

来自分类Dev

如何通过POST API调用以单个键和多个值存储表单数据

来自分类Dev

如何在laravel中存储表单数据?

来自分类Dev

如何在Codeigniter 4中验证表单数据

来自分类Dev

如何在PyroCMS 3.x中的数据库中存储联系人表单数据

来自分类Dev

如何在Firefox中删除某些表单数据

来自分类Dev

如何从存储在localStorage中的表单数据填充表单?

来自分类Dev

如何使用JavaScript将表单数据存储到另一页中的表中?

来自分类Dev

如何在echo PHP中显示表单数据?

来自分类Dev

如何将表单数据存储到Codeigniter会话中?

来自分类Dev

如何在Play框架中显示表单数据

来自分类Dev

如何在PHP中存储和检索经过验证的表单数据?

来自分类Dev

如何构造MySQL数据库以存储多个复选框表单数据,然后在php中进行统计?

来自分类Dev

如何在Angularjs中获取动态表单中的表单数据?

来自分类Dev

如何在数据库中存储不同种类和数量的html表单数据?

来自分类Dev

如何使用RabbitMQ在3层体系结构中存储表单数据

来自分类Dev

JSP存储表单数据

来自分类Dev

如何在 Emberjs 中检索表单数据

来自分类Dev

如何在wicket中解析多部分表单数据

来自分类Dev

如何将多个表单数据值存储到本地存储中的单个键

来自分类Dev

jQuery formBuilder 如何在 XML 中显示表单数据?

来自分类Dev

如何将表单数据发布到存储方法?

来自分类Dev

如何读取表单数据中针对一个参数发送的 $_POST 中的多个值

来自分类Dev

如何将动态表单数据存储在两个不同的表中?

来自分类Dev

如何在db中使用wordpress ajax存储表单数据

Related 相关文章

  1. 1

    如何在Codeigniter中更新表单数据

  2. 2

    如何在Codeigniter中获取提交的表单数据?

  3. 3

    如何在CakePHP中插入多个表单数据作为数据库中的新行

  4. 4

    如何在meanjs中存储ng-repeat数组表单数据?

  5. 5

    表单数据的本地存储

  6. 6

    如何通过POST API调用以单个键和多个值存储表单数据

  7. 7

    如何在laravel中存储表单数据?

  8. 8

    如何在Codeigniter 4中验证表单数据

  9. 9

    如何在PyroCMS 3.x中的数据库中存储联系人表单数据

  10. 10

    如何在Firefox中删除某些表单数据

  11. 11

    如何从存储在localStorage中的表单数据填充表单?

  12. 12

    如何使用JavaScript将表单数据存储到另一页中的表中?

  13. 13

    如何在echo PHP中显示表单数据?

  14. 14

    如何将表单数据存储到Codeigniter会话中?

  15. 15

    如何在Play框架中显示表单数据

  16. 16

    如何在PHP中存储和检索经过验证的表单数据?

  17. 17

    如何构造MySQL数据库以存储多个复选框表单数据,然后在php中进行统计?

  18. 18

    如何在Angularjs中获取动态表单中的表单数据?

  19. 19

    如何在数据库中存储不同种类和数量的html表单数据?

  20. 20

    如何使用RabbitMQ在3层体系结构中存储表单数据

  21. 21

    JSP存储表单数据

  22. 22

    如何在 Emberjs 中检索表单数据

  23. 23

    如何在wicket中解析多部分表单数据

  24. 24

    如何将多个表单数据值存储到本地存储中的单个键

  25. 25

    jQuery formBuilder 如何在 XML 中显示表单数据?

  26. 26

    如何将表单数据发布到存储方法?

  27. 27

    如何读取表单数据中针对一个参数发送的 $_POST 中的多个值

  28. 28

    如何将动态表单数据存储在两个不同的表中?

  29. 29

    如何在db中使用wordpress ajax存储表单数据

热门标签

归档