javascript - ReactJS中按钮和普通文本之间的条件渲染
问题描述
我有一个对象数组说defect
,现在如果缺陷的状态是打开的,那么它应该显示为按钮,它应该读取关闭缺陷,如果它是关闭的,那么作为按钮,它应该只是提到关闭。所以,这statusRender
就是问题所在,现在正在按最后一列中的预期工作。无法弄清楚我错过了什么。有什么线索吗?
render() {
if (defect.defect_status == 'open') {
statusRender = <button key={index} data-id={defect.id} onClick={() => this.showAlert(defect.defect_id)}>{defect.defect_status}</button>;
} else {
statusRender = { defect.defect_status };
}
return (
<div>
<table className="table table-bordered table-hover">
<thead>
<tr>
<th>Defect ID</th>
<th>Category</th>
<th>Description</th>
<th>Priority</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{this.state.defectList.map((defect, index) => {
return (
<tr key={index}>
<td> {defect.defect_id} </td>
<td>{defect.defect_category}</td>
<td>{defect.defect_description}</td>
<td>{defect.defect_priority}</td>
<td> {statusRender}
</td>
</tr>
);
})
}
</tbody>
</table>
</div>
)
}
解决方案
这是一个范围问题,您不能在 map 函数之外声明缺陷
{this.state.defectList.map((defect,index) => {
return (
<tr key={index}>
<td> {defect.defect_id} </td>
<td>{defect.defect_category}</td>
<td>{ defect.defect_description}</td>
<td>{ defect.defect_priority}</td>
<td>
{
defect.defect_status === 'open'
? <button key={index} data-id={defect.id} onClick = {() => this.showAlert(defect.defect_id)}>{defect.defect_status}</button>;
: defect.defect_status;
}
</td>
</tr>
);
})
}
推荐阅读
- sql - SQL 查询:插入名称,获取具有相同值的其他名称
- python - yagmail的UnicodeDecodeError
- android - 谷歌对带有 android:inputType="textEmailAddress" 的 EditText 做了什么验证
- python-3.x - 以 sudo 运行时 python3 脚本失败
- python - 以列表理解为值的字典理解
- java - 如何在百里香输入表单中格式化日期和时间?
- mysql-error-1064 - DELETE SQL 脚本不运行。错误指向“加入”,我不知道为什么
- java - 如何从房间数据库中检索给定用户名和用户 ID 的行列表?
- sql - 在 BigQuery 中查找最高相关值
- ios - 在 iOS coredata 的表中包含唯一性约束的新列时出错