首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从向节点js服务提交输入

如何从向节点js服务提交输入
EN

Stack Overflow用户
提问于 2020-04-06 09:17:26
回答 1查看 255关注 0票数 0

我有一个关于反应js的一般性问题。我的反应很新。react的一般方法是为输入控件创建一个状态对象,并在提交之前将其状态值分配给该输入。当页面上有2-5个控件时,这会很好。

我有20种不同类型的输入出现在页面上,如文本框,下拉列表,日历和单选按钮。是否需要在状态对象中创建20个属性?是否需要为控件编写20种不同类型的onChange函数?这将使我的代码过于宽松。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-06 09:38:33

受控输入

您正在处理的是控制的输入。如果您不需要保持状态(在底部您将找到一个可以帮助您实现这一点的链接),您可以通过不受控制的输入来实现

要处理所需的输入,可以这样做:

重要:请注意状态属性与输入名称.匹配。

代码语言:javascript
复制
class App extends React.Component {
  state = {
    text: "",
    checkbox: false,
    dropdown: "",
    date: "",
    radio: ""
  };

  handleTextChange = event => {
    const { name, value } = event.target;
    this.setState({ [name]: value });
  };

  handleCheckboxChange = event => {
    const { name } = event.target;
    this.setState(previousState => ({ [name]: !previousState[name] }));
  };

  handleDropdownChange = event => {
    const { name, value } = event.target;
    this.setState({ [name]: value });
  };

  handleDateChange = event => {
    const { name, value } = event.target;
    this.setState({ [name]: value });
  };

  handleRadioChange = event => {
    const { name, value } = event.target;
    this.setState({ [name]: value });
  };

  render() {
    return (
      <div className="App">
        <p>Text</p>
        <input
          type="text"
          name="text"
          onChange={this.handleTextChange}
          value={this.state.text}
        />

        <p>Checkbox</p>
        <input
          type="checkbox"
          name="checkbox"
          onChange={this.handleCheckboxChange}
          value={this.state.checkbox}
        />

        <p>Dropdown</p>
        <select
          name="dropdown"
          value={this.state.dropdown}
          onChange={this.handleDropdownChange}
        >
          <option name="option1">Option 1</option>
          <option name="option2">Option 2</option>
        </select>

        <p>Date</p>
        <input
          type="date"
          name="date"
          onChange={this.handleDateChange}
          value={this.state.date}
        />

        <p>Radio</p>
        <input
          type="radio"
          name="radio"
          onChange={this.handleRadioChange}
          value="option1"
        />
        <label for="option1">Option 1</label>
        <br />

        <input
          type="radio"
          name="radio"
          onChange={this.handleRadioChange}
          value="option2"
        />
        <label for="option2">Option 2</label>
      </div>
    );
  }
}

然后,您可以简单地添加这些类型之一的更多输入,仔细地将输入name与类状态`属性相匹配。

您可以在这个代码框中找到一个有用的示例:https://codesandbox.io/s/controlled-inputs-jttq8

要获得更详细的答案和如何处理不受控制的表单,请参阅媒体上的这篇令人敬畏的文章:https://medium.com/@agoiabeladeyemi/the-complete-guide-to-forms-in-react-d2ba93f32825

来源:https://reactjs.org/docs/forms.html#controlled-components

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

https://stackoverflow.com/questions/61056502

复制
相关文章

相似问题

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