0
class Example extends React.Component {
constructor() {
super();
this.isChecked = this.isChecked.bind(this);
}
isChecked(ex){
return this.props.defaults && $.inArray(ex, this.props.defaults);
}
render() {
return (
<div className="example">
{this.props.items.map(item => (
var checked = this.isChecked({item.type});
<span key={item.type}>
<input type="checkbox" {checked ? 'checked' : ''} name="example" value={item.type} id={item.type} />
<label htmlFor={item.type}>{item.display}</label>
</span>
))}
</div>
);
}
}
基于可变在上述例子中有条件地设置复选框的状态,我已通过的项目的列表的部件this.props.items
和默认值this.props.defaults
的列表。对于每个项目,如果项目在默认列表中,我希望其状态为checked
。留下整体设计相同,我该怎么做? (注:我意识到我可以重新设计应用程序以避免在地图中声明变量的问题,这不是问题)。在ReactJS
上面的代码不工作(显然),我只是想给大家一个想法,我在这里尝试。如果你运行这个错误,那么在声明“var”的地方就会出现类似“意外标记”的错误。
感谢您的意见。我设置的原因是我检查过的方式是因为在HTML中单词“checked”的存在表示应该检查盒子;价值并不重要。那是不正确的?但我确实认为我必须使用危险的SetInnerHtml方法按照我尝试的方式来执行操作。顺便说一下,建议非常感谢。 – KyleM
哦,我明白你为什么试图吐出检查,但是在这种情况下,这不是有效的jsx语法。 React处理你的优化,你不会在DOM中看到“checked = true”。 –
谢谢你,你的解决方案工作。还有其他一些小错误,例如,key = {item.type}应该是key = {item.type + checked},这样如果默认选中的项目发生更改,reactJS将重新呈现列表。显然,你无法知道,因为它是我的实现特定的。非常感谢你的帮助! – KyleM