在 React 中创建一个保存数据的表单

Posted

技术标签:

【中文标题】在 React 中创建一个保存数据的表单【英文标题】:Creating a form in React that saves data 【发布时间】:2018-02-03 13:12:52 【问题描述】:

我正在尝试在 react 中创建一个客户详细信息表单(当前使用 react-json-form),我可以在其中重用输入中的值来创建应用程序可以引用的保存文件。我已经创建了表单并可以输出结果,但我不确定如何保存输入值以供将来使用或在保存后将其回调。

如果有人对执行此操作的表单有任何建议或示例,我将不胜感激。

我的代码如下:

import React,  Component  from 'react';
import JSONTree from 'react-json-tree';
import  BasicForm as Form, Nest, createInput  from 'react-json-form';

const Input = createInput()(props => <input type="text" ...props />);

const UserFields = () => (
  <section>
    <h3>User</h3>
    <div>Name: <Input path="name" /></div>
    <div>Email: <Input path="email" /></div>
  </section>
);

export default class ExampleForm extends Component 
  state =  data:  ;

  updateData = data => this.setState( data );

  render() 
    return (
      <Form onSubmit=this.updateData>
        <Nest path="user">
          <UserFields />
        </Nest>
        <button type="submit">Submit</button>
        <JSONTree data=this.state.data shouldExpandNode=() => true />   
      </Form>
    );
  

【问题讨论】:

【参考方案1】:

更简单的解决方案是使用表单,例如 semanti-ui-react 表单,将信息存储到状态 onChange,然后将信息转换为 JSON 进行存储。

import  Form, Button  from 'semantic-ui-react'

export default class App extends Component 
  constructor() 
    super()

    this.state = 
      name: "",
      email: ""
    

handleChange = (e, name, value) => 
  console.log(name, value)
  this.setState([name]: value)

render() 
  return (
    <div>
      <Form onSubmit=this.sendDataSomewhere>
        <Form.Field>
          <Form.Input name="name" value=this.state.name onChange=this.handleChange/>
        </Form.Field>
        <Form.Field>
          <Form.Input name="email" value=this.state.email onChange=this.handleChange/>
        </Form.Field>
        <Button type="submit">Submit</Button>
       </Form>
     </div>
    )
  

我使用一种动态方法,使用 name 和 val 属性从不同字段接收输入。然后 this.state.whatever 可以访问 state 中捕获的值

希望这有帮助

【讨论】:

谢谢,这看起来很有希望。唯一的问题似乎是,当我尝试使用代码时,它给了我错误的意外标记并指向:“this.state = ”你会碰巧知道是什么原因造成的吗? 每当您开始在该字段中输入时,它都会改变状态。

以上是关于在 React 中创建一个保存数据的表单的主要内容,如果未能解决你的问题,请参考以下文章

在 wp 管理仪表板中创建表单并将数据保存在自定义创建的数据库中

在单击保存或检索时,我需要帮助在一个表单中创建多个按钮而不执行表单操作

如何在 MS Access 2013 中创建只读表?

在node.js中创建一个包含表单数据的文件[关闭]

如何从 django 的表单中获取数据?

jQuery magnefic popup 保存表单数据而无需完全提交