在选择

时间:2017-10-11 01:22:00

标签: reactjs

如何在州内选择中使用选项?

 this.state = {
        posts: [],
        question: '',
        body: '',
        postType: '', 
      }

             <select value="types" className="u-full-width">
                <option value="Option 1">Question</option>
                <option value="Option 2">Discussion</option>
                <option value="Option 3">Clout</option>
              </select>   

我不知道如何根据用户选择的内容设置postType的状态。

       getPostType() {
        const type = 
        this.setState({ postType: type });
       }

3 个答案:

答案 0 :(得分:1)

您需要添加一个函数来处理select上的更改,保存状态中的值并将其传递给select。

这样的事情:

&#13;
&#13;
class App extends React.Component {
constructor(props){
    super(props);
     this.state = {
        postType: 'Option 1', 
      }
	this.onChange = this.onChange.bind(this)
};


onChange(event){
 this.setState({
   postType: event.target.value
 })
}


render() {
    return (
       <div>
          <select value={this.state.postType} onChange={this.onChange} className="u-full-width">
                <option value="Option 1">Question</option>
                <option value="Option 2">Discussion</option>
                <option value="Option 3">Clout</option>
              </select>  
             {this.state.postType}
       </div>
    );
  }
}


ReactDOM.render(
   <App />,
   document.getElementById('container')
)
&#13;
<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="container"></div>
&#13;
&#13;
&#13;

这称为受控组件。您可以阅读更多相关信息here

答案 1 :(得分:0)

您可以尝试以下实施。

class Sample extends React.Component {
  constructor(props) {
  super(props);
  this.state = {
    posts: [],
    question: '',
    body: '',
    postType: 'Question', 
  }
  this.handleChange = this.handleChange.bind(this);
}

handleChange(event) {
  this.setState({postType: event.target.value});
}

render() {
  return (
    <form>
    <label>
      Select your postType:
      <select className="u-full-width" value={this.state.postType} 
       onChange={this.handleChange}>
            <option value="Question">Question</option>
            <option value="Discussion">Discussion</option>
            <option value="Clout">Clout</option>
      </select> 
    </label>
    </form>
   );
  }
}

 ReactDOM.render(
  <Sample />,
  document.getElementById('root')
 );

答案 2 :(得分:0)

我认为您正在寻找的是以下内容:

<select className="u-full-width" 
        onChange= this.handleOnChange.bind(this)
        ref={value => this.refName = value}>
    <option value="Option 1">Question</option>
    <option value="Option 2">Discussion</option>
    <option value="Option 3">Clout</option>
</select>

handleOnchange(e){
    e.preventDefault(e);
    const type = this.refName.value;
    setState({postType: type});
}

希望它有用!