reactjs - React 表单中的两个下拉菜单

标签 reactjs forms

我想获取具有两个下拉列表的表单的用户输入,并使用react将其存储在全局变量中。我看了reacts docs关于如何创建表单,并稍微操作其代码以具有两个下拉菜单,但无法将其保存为全局变量并将该全局变量打印到屏幕上。不幸的是,当我单击第二个提交按钮时出现错误(第一个按钮没有执行任何操作)。这是错误:TypeError:这是未定义的handleSubmit src/App.js:55 52 | } 53 |处理提交(事件){ 54 | event.preventDefault(); > 55 |二 = this.state.value | ^ 56 | } 57 | 58 | 58使成为() { - 。这是我在 App.js 中的代码:

import React from "react";
import "./App.css";
var one = "";
var two = "";

class FlavorFormOne extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value: "coconut" };
    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({ value: event.target.value });
  }
  handleSubmit(event) {
    event.preventDefault();
    one = this.state.value
  }

  render() {
    return (
      <div>
        <form onSubmit={this.handleSubmit}>
          <label>
            Pick your favorite flavor:
            <select value={this.state.value} onChange={this.handleChange}>
              <option value="grapefruit">Grapefruit</option>
              <option value="lime">Lime</option>
              <option value="coconut">Coconut</option>
              <option value="mango">Mango</option>
            </select>
          </label>
          <input type="submit" value="Submit" />
        </form>
        
      </div>
    );
  }
}

class FlavorFormTwo extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value: "GrabeFruit" };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(event) {
    this.setState({ value: event.target.value });
  }
  handleSubmit(event) {
    event.preventDefault();
    two = this.state.value
  }

  render() {
    return (
      <div>
        <form onSubmit={this.handleSubmit}>
          <label>
            Pick your favorite flavor:
            <select value={this.state.value} onChange={this.handleChange}>
              <option value="grapefruit">Grapefruit</option>
              <option value="lime">Lime</option>
              <option value="coconut">Coconut</option>
              <option value="mango">Mango</option>
            </select>
          </label>
          <input type="submit" value="submit"/>
        </form>
        
      </div>
    );
  }
}

function App() {
  return (
    <>
    <FlavorFormOne />
    <FlavorFormTwo />
    {one}
    {two}
    </>
  );
}

export default App;

最佳答案

您没有通过事件

尝试onSubmit={(e)=>this.handleSubmit(e)}

还有onChange={(e)=>this.handleChange(e)}

关于reactjs - React 表单中的两个下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64949382/

相关文章:

c# - 如何检查窗口在 Windows 窗体中是否真的可见?

reactjs - 是否可以根据用户代理(设备类型)在 vercel 上使用 nextjs 提供不同版本的静态页面?

reactjs - 使用代码拆分创建 React 组件 UI 库

javascript - 在 Gatsby 中可以有多个布局

javascript - HTML 表单字段 - 如何要求输入格式

javascript - Bootstrap 3 表单中用户输入是如何提交的?

javascript - jQuery - 使用表单外的选项卡进行表单验证

javascript - 未处理的拒绝(类型错误): Cannot read property of undefined

reactjs - 无状态功能组件和 `react`导入

javascript - 按下回车键时写入文本区域?