1
我的第一個想法是以傳統的方式進行,即將所有數據作爲字符串收集並返回爲dangerouslySetHtml
。我可以稍後在render()
中將此函數稱爲{this.renderList()}
。我該如何做「反應方式」,即在方法中構建JSX
元素並在render()中實現它?以下是我如何處理這種情況的隨機示例。React中的正確方法是循環訪問一個數組,以在函數中構建html選擇項目列表並在render()中調用它?
constructor(props)
{
super(props);
this.state = {
users: [{..}, {..}, {..}],
info: [{..}, {..}]
};
}
renderSelectDropdown()
{
data = '<select>'
this.state.users.forEach(user =>
{
data += '<optgroup label={user.title}>';
for (let item in this.state.info)
{
this.state.info[user.name][item].forEach(s => {
data += '<option>'+ s +'</option>';
})
}
data += '</optgroup>'
});
data += '</select>';
return {__html: data};
}
render()
{
return (
<div>
<input type="text" name="name">
<div dangerouslySetInnerHTML = this.renderSelectDropdown()></div>
</div>
)
}
這是完美的! – anonym
其實,有一個錯誤。忘了設定每個選項的價值。這應該是:';' – Win
非常感謝,贏! – anonym