reactjs - 在 React 中使用按钮进行条件渲染
问题描述
与 React 合作了几个星期,我正在尝试让条件渲染工作。我正在处理一个有几行的表,其中每一行都有一个“编辑”和“删除”按钮。在值为false的“安全”列上,我希望两个按钮都不显示。我试图将按钮渲染为隐藏,并且通过一些逻辑,如果道具不为假,按钮将显示。我在另一段代码上使用了 ConfigComponent,我在其中显示了所有表值。
见下表:
const ConfigComponent = (props) => {
console.log(props.secured)
if (props.secured !== true) {
return (
<tr>
<td>{props.configCategory}</td>
<td>{props.configValue}</td>
<td>{props.description}</td>
<td>{props.configTypeId}</td>
<td>{props.dataTypeId}</td>
<td>{props.secured}</td>
<td>{props.createdDate}</td>
<td>{props.modifiedDate}</td>
<td>{props.modifiedBy}</td>
<td>{props.id}</td>
<td><button type="button" class="btn btn-sm btn-primary" hidden={!props.secured} onClick={() => props.onClick(props.id)}>Edit</button></td>
<td><button type="button" class="btn btn-sm btn-danger" hidden={!props.secured} onClick={() => props.onDelete(props.id)}>Delete</button></td>
</tr>
)}
else {
return (
<tr>
<td>{props.configCategory}</td>
<td>{props.configValue}</td>
<td>{props.description}</td>
<td>{props.configTypeId}</td>
<td>{props.dataTypeId}</td>
<td>{props.secured}</td>
<td>{props.createdDate}</td>
<td>{props.modifiedDate}</td>
<td>{props.modifiedBy}</td>
<td>{props.id}</td>
</tr>
)}
}
render() {
let configList = this.state.configList
return (
<React.Fragment>
<h3 class="font-weight-bold py-3 mb-4">Config List</h3>
<table className="table">
<thead>
<tr>
<th>Config Category</th>
<th>Config Value</th>
<th>Description</th>
<th>ConfigTypeId</th>
<th>DataTypeId</th>
<th>Secured</th>
<th>Created Date</th>
<th>Modified Date</th>
<th>Modified By</th>
<th>ID</th>
</tr>
</thead>
<tbody>
{configList.map((config, i) => {
return (
<React.Fragment key={i}>
<ConfigComponent
key={config.id}
id={config.id}
configCategory={config.configCategory}
configValue={config.configValue}
description={config.description}
configTypeId={config.configTypeId}
dataTypeId={config.dataTypeId}
secured={(config.secured).toString()}
createdDate={moment(config.createdDate).format("YYYY-MM-DD")}
modifiedDate={moment(config.modifiedDate).format("YYYY-MM-DD")}
modifiedBy={config.modifiedBy}
onClick={this.editClick}
onDelete={this.deleteClick} />
</React.Fragment>
)
})}
</tbody>
</table>
</React.Fragment>
)
}
解决方案
我不确定你的问题是什么......
你对字符串进行强制转换
secured={(config.secured).toString()}
但是然后你检查一个明确的“真”
if (props.secured !== true)
我认为这将始终返回 false,删除强制转换 toString() 应该会带来更好的行为
推荐阅读
- java - @WithMockUser 在并行上下文中
- vue.js - 如何将 Vuetify 中所有项目的字体从 Roboto 更改为另一个
- php - 是否有任何辅助函数可以将表单数据分配到 laravel 中的模型中?
- node.js - 如何从对象数组中提取一系列对象并将它们重新插入到数组中的新位置?
- python - 如何使用列表理解方法获取“价格”序列化数据?
- css - 如何阻止侧边栏在引导管理主题中滚动
- java - 对于联系人列表的循环未执行
- amazon-web-services - 如何使用 Terraform 在两个不同的计划上触发 SSM 运行命令/文档
- c# - 是否可以在 ASP.NET Core 的 Identity RoleClaims 表中添加新列并获取所有列的值
- android - Android - 使用 Volley 解析嵌套的 JSON 数组