【问题标题】:get value from select -- REACT从选择中获取价值——反应
【发布时间】:2018-05-30 17:38:22
【问题描述】:

我尝试了一些来自select 标记的显示值。

我尝试的第一件事是event.target.valueonChange。 我尝试的第二件事是event.nativeEvent.value

不可能,所以如果你有我的奇迹!我接受这个

所以如果你愿意,我会发布我的部分代码:

class App extends Component {

    constructor(props) {
        super(props);
        this._createBounds();
        this.state = {
            value: 'a'
        }

    }

    _createBounds() {
        ['_handleSubmit', '_renderTasks', '_handleChange']
            .forEach((fn) => this[fn] = this[fn].bind(this));
    }

    _handleChange(event) {
        this.setState({ value: event.currentTarget.value }) // I tried before target.value, or nativeEvent.value
    }

    render() {
        return (
            <div className="container">
                <div className="list-container">
                    <div className="list-select">
                        <select
                            onChange={this._handleChange()}
                            className="ant-input selectBox"
                            style={{width: 200}}
                            placeholder="Select a person"
                            ref={ref => {
                                this._select = ref
                            }}
                            value={this.state.value}
                            defaultValue={this.state.value}
                        >
                            <option value="a">A</option>
                            <option value="b">B</option>
                            <option value="c">C</option>
                            <option value="d">D</option>
                            <option value="e">E</option>
                            <option value="f">F</option>
                            <option value="g">G</option>
                            <option value="h">H</option>
                            <option value="i">I</option>
                            <option value="j">J</option>
                            <option value="k">K</option>
                            <option value="l">L</option>
                            <option value="m">M</option>
                            <option value="n">N</option>
                            <option value="o">o</option>
                            <option value="p">P</option>
                            <option value="q">Q</option>
                            <option value="r">R</option>
                            <option value="s">S</option>
                            <option value="t">T</option>
                            <option value="u">U</option>
                            <option value="v">V</option>
                            <option value="w">W</option>
                            <option value="x">X</option>
                            <option value="y">Y</option>
                            <option value="z">Z</option>
                        </select>
                  </div>
              </div>
          </div>
        );
    }
}

【问题讨论】:

    标签: javascript html css reactjs


    【解决方案1】:

    将您的 onChange 更改为此。

    onChange={this._handleChange}
    

    您还可以尝试另一种 handleChange 方法

    handleChange(e) {
    let {name, value} = e.target;
    this.setState({
      [name]: value,
    
    });
    
    }
    

    【讨论】:

    • pffffff... 解决了,刚刚的问题:this._handleChange 就为了那个...谢谢
    【解决方案2】:
    import React, { Component } from 'react';
    
    export default class App extends Component {
    
      constructor(props) {
        super(props);
        this.state = {
          value: 'a'
        }
      }
    
      _handleChange = (event) => {
        this.setState({ value: event.target.value })
      }
    
      render() {
        return (
          <div className="container">
            <div className="list-container">
              <div className="list-select">
                <select
                  onChange={this._handleChange}
                  className="ant-input selectBox"
                  style={{ width: 200 }}
                  placeholder="Select a person"
                  ref={ref => {
                    this._select = ref
                  }}
                  defaultValue={this.state.value}
                >
                  <option value="a">A</option>
                  <option value="b">B</option>
                  ...
                </select>
              </div>
            </div>
          </div>
        );
      }
    }
    

    您不应在 onChange 处理程序中调用 _handleChange。 两者都包含是不好的做法

    value={this.state.value}
    defaultValue={this.state.value}
    

    在 React 的下拉列表中。您可以提供两者之一,但不能同时提供。

    如果您打算将该处理程序用于多个输入,那么您应该考虑改为这样做。

    _handleChange = ({ target: { name, value } }) => {
        this.setState({ [name]: value })
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 2018-07-11
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2019-02-10
      相关资源
      最近更新 更多