javascript - React 有条件地设置导航
问题描述
我通过映射每一行来填充一个表,并在内部映射每一列。我只想在NavLink
每行的第一列启用一个实例。我还想使用该行ID
并将其连接到路径。现在我有这个:
{props.tableData
.map(n => {
return (
<TableRow key={n.id}>
<TableCell component="th" padding="checkbox">
<Switch
checked={n.commission === 1}
onChange={(event) => props.setPayment(n.id, event.target.checked)}
color="primary"
/>
</TableCell>
{
Columns.map((c,index) => {
return (
index === 1 && <NavLink className={classes.navLink} activeClassName={classes.activeNavLink} to "/brokers/".concat(n.id) >
<TableCell key={c.key} component="th" padding="checkbox">{c.format(n[c.key])}</TableCell>
index === 1 && <NavLink />
)
})
}
......
连接失败:
to "/brokers/".concat(n.id)
而且条件逻辑不起作用。
我该怎么做 ?
解决方案
更改(它们将解决这两个问题):
1-我们不能返回多个元素,所以使用React.Fragment(它不会向 DOM 添加额外的节点)。
2-使用模板文字将变量放在字符串中。
使用此代码:
{props.tableData
.map(n => {
return (
<React.Fragment>
<TableRow key={n.id}>
<TableCell component="th" padding="checkbox">
<Switch
checked={n.commission === 1}
onChange={(event) => props.setPayment(n.id, event.target.checked)}
color="primary"
/>
</TableCell>
{
Columns.map((c,index) => {
const cell = <TableCell key={c.key} component="th" padding="checkbox">{c.format(n[c.key])}</TableCell>;
if (index === 1) {
return (
<NavLink key={c.key} className={classes.navLink} activeClassName={classes.activeNavLink} to={`/brokers/${n.id}`} >
{cell}
</NavLink>
)
}
return cell;
})
}
</TableRow>
</React.Fragment>
)
})
}
推荐阅读
- ninja - 忍者能处理长文件名吗?
- r - (自动)在 RStudio 控制台中以各自的颜色显示十六进制字符串?
- python - 如何获取for循环内的文本长度
- php - Zammad API:使用标签创建票证
- amazon-web-services - 如何在 API Gateway (AWS) 的资源策略中使用与 API 密钥关联的标签
- reactjs - 使用 js operator ... 将数据传递到 redux reducer
- amazon-web-services - AWS App-Sync(请求失败,状态码为 403)
- reactjs - “mobx-react”包已弃用?
- r - 如何用颜色而不是r中的线填充折线图中的点?
- flutter - 如何在条件语句中定义 TextStyle