从select中获取价值 - REACT

时间:2017-12-16 22:24:07

标签: javascript html css reactjs

我尝试了一些来自select标签的显示值的东西。

我尝试的第一件事是event.target.value onChange。 我尝试的第二件事是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>
        );
    }
}

2 个答案:

答案 0 :(得分:7)

将onChange更改为此。

onChange={this._handleChange}

还可以尝试另一种handleChange方法

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

});

}

答案 1 :(得分:1)

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>
              <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>
    );
  }
}

您不应该在_handleChange处理程序中调用onChange

包含两者都是不好的做法
value={this.state.value}
defaultValue={this.state.value}

在React的下拉列表中。你要么提供两个中的一个而不是两个。