【问题标题】:getting input with select使用 select 获取输入
【发布时间】:2019-03-05 12:05:29
【问题描述】:

在我的反应应用程序中,我希望将输入更改为表单中的选择标签,我该怎么做?

<form className="form-maker" onSubmit={this.handleSubmit}>
   Type:
  <input name="inputType" type="text" onChange={this.handleChange} />
</form>

到这里:

<select>
  <option value="text">text</option>
  <option value="color">color</option>
  <option value="date">date</option>
  <option value="email">email</option>
  <option value="tel">tel</option>
  <option value="number">number</option>
</select>

【问题讨论】:

    标签: reactjs forms select input


    【解决方案1】:

    handleChange 位于&lt;select /&gt; 元素中,类似于&lt;input /&gt;

    这是一个运行中的小例子:

    class App extends React.Component {
      state = { value: "text" };
    
      onSelect = ({target}) => this.setState({value: target.value})
    
      render() {
        const { value } = this.state;
        return (
          <div>
            <select onChange={this.onSelect}>
              <option value="text">text</option>
              <option value="color">color</option>
              <option value="date">date</option>
              <option value="email">email</option>
              <option value="tel">tel</option>
              <option value="number">number</option>
            </select>
            <div>{`Selectet Value is ${value}`}</div>
          </div>
        );
      }
    }
    
    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <div id="root"/>

    您可能需要这些值的数组,因此渲染&lt;options /&gt; 和设置selected 属性会更容易。

    这是另一个示例,这次选择了不同的默认值:

    const values = [
      "text", "color", "date", "email", "tel","number"
    ]
    
    class App extends React.Component {
      state = { value: "date" };
    
      onSelect = ({target}) => this.setState({value: target.value})
    
      render() {
        const { value } = this.state;
        return (
          <div>
            <select onChange={this.onSelect}>
              {values.map(val => <option key={val} value={val} selected={val === value}>{val}</option>)}
            </select>
            <div>{`Selectet Value is ${value}`}</div>
          </div>
        );
      }
    }
    
    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <div id="root" />

    【讨论】:

    • 我还有一个问题,有没有办法让我在提交后重置选择选项卡?我输入了一个选项,上面写着:请选择一种类型,我希望在提交后再次显示它
    • 是的,再次设置状态
    • 但是select没有连接状态(我用的是第一个代码sn -p)
    • 所以这是一个不受控制的选择。就像你有一个不受控制的输入一样,你没有设置值,你不能重置它。阅读this
    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2017-07-20
    • 2015-03-17
    • 2021-11-30
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多