动态创建时,我的复选框未被检查。我无法找到问题所在。但是,当我对check box id
和label for
的值进行硬编码时,它才有效。
var category_list = this.props.categories_list.map(function(name, i) {
// debugger
return (
<div className="group-chkbx list-group-item">
<input key={i+11} type="checkbox" id={name.category_id} name="category" />
<label htmlFor={name.category_id}>{name.name}</label>
</div>
)
});
答案 0 :(得分:1)
无论如何,没有什么可以设置checked
道具。什么时候应该检查?
(另外,请记住数组中的组件(例如.map
返回的内容)should have unique key
props。)
答案 1 :(得分:1)
经过大量研究,我的一位同事帮助我解决了问题。 htmlFor
和id
必须相同,but cannot be only numeric
。我正在使用的ID是纯粹的数字。当我添加字母作为前缀时,它开始像魅力一样工作。感谢所有人在这里表现出兴趣和帮助。
答案 2 :(得分:0)
输入的checked属性将控制是否选中它。通常我使用本地状态(或来自全局redux状态的东西来控制检查的内容)。小例子:
class Something extends React.Component {
constructor(props) {
super(props);
this.state = {
checked: 0
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
// Do Stuff
}
render() {
return (
<div>
{
this.props.categories_list.map(function(name, i) {
return (
<div className="group-chkbx list-group-item" key={i}>
<input checked={i === this.state.checked} onChange={this.handleChange} type="checkbox" id={name.category_id} name="category" />
<label htmlFor={name.category_id}>{name.name}</label>
</div>
)
});
}
</div>
);
}
}
答案 3 :(得分:0)
如果您的复选框没有选中,则很可能是其他一些功能阻止了它。
这里以及如何获取复选框值的示例:
class WithChecks extends Component {
constructor(props){
super(props);
this.getValue = this.getValue.bind(this);
}
getValue(e){
const chk = e.target;
console.log(chk.checked);
console.log(chk.value);
}
render() {
const arr = ['a', 'b', 'c', 'd'];
return (
<div>
{
arr.map((value, index) => {
return (
<div key={index}>
<input type="checkbox"
id={'chk' + index}
onChange={this.getValue}
name="category"
value={value} />
<label htmlFor={'chk' + index}>{value}</label>
</div>
);
})
}
</div>
);
}
}
也许这有助于澄清。