首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在select中设置state based选项值

在select中设置state based选项值
EN

Stack Overflow用户
提问于 2017-10-11 09:22:00
回答 3查看 2.9K关注 0票数 1

如何在我的状态下使用select中的选项?

代码语言:javascript
复制
 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的状态。

代码语言:javascript
复制
       getPostType() {
        const type = 
        this.setState({ postType: type });
       }
EN

回答 3

Stack Overflow用户

发布于 2017-10-11 09:44:47

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

如下所示:

代码语言:javascript
复制
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')
)
代码语言:javascript
复制
<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>

这称为受控组件。你可以阅读更多关于它的here

票数 1
EN

Stack Overflow用户

发布于 2017-10-11 09:37:23

您可以尝试以下实现。

代码语言:javascript
复制
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')
 );
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 09:40:36

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

代码语言:javascript
复制
<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});
}

希望能对大家有所帮助!

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

https://stackoverflow.com/questions/46678300

复制
相关文章

相似问题

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