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

标签 javascript json forms reactjs state

我正在尝试在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>
    );
  }
}

最佳答案

更简单的解决方案是使用表单,例如 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

访问状态中捕获的值

希望这有帮助

关于javascript - 在 React 中创建一个保存数据的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45882189/

相关文章:

javascript - 如果没有找到内容则隐藏工具提示

java - 如何将 json ListView 上选定项目的值发送到另一个 Activity ?

javascript - 将属性推送到数组中的所有 JSON 对象

javascript - 如何使标签描述成为必填项

c# webbrowser从文本框中获取其url

javascript - 输入类型禁用和只读对于 href 的行为不同

javascript - 为什么 getAttribute ('href' ) 在与reduce 一起使用时返回完整的URL?

c# - 当从 aspx.cs 页面传递值时,警报在 javascript 中显示未定义

php - 如何使用 JQuery 刷新 JSON 数据?

ruby-on-rails - 使用 collection_select 并从 sqlite3 收到意外错误 - 有人知道为什么吗?