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
设置为状态下所选选项的idAFAIK 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)}
啊,是的,对不起,搞砸了:)Yaconsole.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/`)
)
}