我正在尝试为单选按钮创建一个通用输入字段,我将在我的项目中使用,每当我需要在reactjs中使用单选按钮时,我想知道如何动态传递单选按钮,以便默认情况下检查第一个元素以及如何在map函数中使用checked属性
render() {
var self = this;
return(
<div>
{
self.props.options.map(function(option){
return <label key={option[self.props.id]}><input type="radio" className={self.props.className}
checked={?????} key={option[self.props.id]}
onChange={self.props.onChange} value={option[self.props.name]} />{option[self.props.name]}</label>
})
}
</div>
);
}
options是我传递给map函数的对象数组
任何帮助都会非常有用..
提前致谢:)
答案 0 :(得分:2)
您可以保持已检查索引的状态并将其初始化为0, 并在onchange函数上将其更改为所选索引。
类似的东西:
<div>
{ self.state.options.map(function(option,i){
return <label key={option[self.props.id]}>
<input type="radio"
className={self.props.className}
checked={i==self.state.checkedIndex}
key={option[self.props.id]}
onChange={self.onChange.bind(this,i)}
value={option[self.props.name]}
/>
{option[self.props.name]}
</label>
})
}
</div>
和onchange函数
onChange = function(i) {
this.setState({checkedIndex : i})
}
答案 1 :(得分:1)
你需要使用状态。使用此:
this.state={checked: 0}
onChange(i){
this.setState({
checked:index
});
}
render() {
return(
<div>
{
this.state.options.map((option,i)=>{
return <label key={option[this.props.id]}>
<input
type="radio"
className={this.props.className}
checked={this.state.checked == i? true: false}
key={option[this.props.id]}
onChange={this.onChange.bind(this,i)}
value={option[this.props.name]} />
{option[this.props.name]}
</label>
})
}
</div>
);
}
检查工作小提琴:https://jsfiddle.net/039eq8bx/