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