Javascript Reactjs-从event.target检索属性

Javascript Reactjs-从event.target检索属性,javascript,reactjs,dictionary,key,Javascript,Reactjs,Dictionary,Key,我有一个组件,它呈现Input type='select':(我正在使用reactstrap) 在这个函数中,我没有为event.target.id获取任何值 我也尝试了event.target.key,但返回了一个空字符串“” 我想将subreddit\u id设置为状态下所选选项的idAFAIK event.target.id应该工作,在我的项目中也这样做 但不是吗 <Input type="select" onChange={(e) => this.handleSubredd

我有一个组件,它呈现
Input type='select'
:(我正在使用reactstrap)

在这个函数中,我没有为
event.target.id
获取任何值

我也尝试了
event.target.key
,但返回了一个空字符串“”


我想将
subreddit\u id
设置为状态下所选选项的id

AFAIK event.target.id应该工作,在我的项目中也这样做

但不是吗

<Input 
type="select"
onChange={(e) => this.handleSubredditSelect}
required>`
this.handleSubredditSelect}
必需>`

??(methodname后面没有副词)

选择不起作用,因为
元素中的
事件.target
返回带有选项的整个树:

// result of event.target:
<select>
  <option id="id-1" value="some1">some1</option>
  <option id="id-2" value="some2">some2</option>
  <option id="id-3" value="some3">some3</option>
</select>

守则:

export default class SelectForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: "some1",
      id: "id-1"
    };
  }

  handleChange = event => {
    console.log("event", event.target, event.target.selectedIndex);

    this.setState({
      value: event.target.value,
      id: event.target[event.target.selectedIndex].id
    });
  };

  render() {
    return (
      <div>
        <select value={this.state.sex} onChange={this.handleChange}>
          <option id="id-1" value="some1">some1</option>
          <option id="id-2" value="some2">some2</option>
          <option id="id-3" value="some3">some3</option>
        </select>
        ID: {this.state.id}
      </div>
    );
  }
}
导出默认类SelectForm扩展React.Component{
建造师(道具){
超级(道具);
此.state={
值:“some1”,
id:“id-1”
};
}
handleChange=事件=>{
console.log(“事件”,event.target,event.target.selectedIndex);
这是我的国家({
值:event.target.value,
id:event.target[event.target.selectedIndex].id
});
};
render(){
返回(
某物
大约2
大约3
ID:{this.state.ID}
);
}
}

您可以使用select的selectedIndex属性:

handleSubredditSelect(event) {  
    const selectedOption = event.target.childNodes[event.target.selectedIndex];
    this.setState({
        subreddit_selected: event.target.value,
        subreddit_id: selectedOption.id,
    }, () => 
        this.props.history.push(`/${this.state.subreddit_selected}/new/`)
    )
}

这里是沙盒:

我认为它应该是
onChange={this.handleSubredditChange}
或者
onChange={(e)=>this.handleSubredditChange(e)}
啊,是的,对不起,搞砸了:)Ya
console.log(event.target)
返回整个
select
。那么,如何解决这个问题呢。如果我没有错的话,你放的代码也面临同样的问题@SreekarMouli是的,对不起,我同时还在对它进行编码,请现在检查它,它应该可以工作:)使用
event.target[event.target.selectedIndex].id
所以要访问任何其他属性,我们只需执行
event.target[event.target.selectedIndex].attribute
event.target[event.target.selectedIndex].id 
export default class SelectForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: "some1",
      id: "id-1"
    };
  }

  handleChange = event => {
    console.log("event", event.target, event.target.selectedIndex);

    this.setState({
      value: event.target.value,
      id: event.target[event.target.selectedIndex].id
    });
  };

  render() {
    return (
      <div>
        <select value={this.state.sex} onChange={this.handleChange}>
          <option id="id-1" value="some1">some1</option>
          <option id="id-2" value="some2">some2</option>
          <option id="id-3" value="some3">some3</option>
        </select>
        ID: {this.state.id}
      </div>
    );
  }
}
handleSubredditSelect(event) {  
    const selectedOption = event.target.childNodes[event.target.selectedIndex];
    this.setState({
        subreddit_selected: event.target.value,
        subreddit_id: selectedOption.id,
    }, () => 
        this.props.history.push(`/${this.state.subreddit_selected}/new/`)
    )
}