【发布时间】:2017-07-27 22:23:48
【问题描述】:
我正在将 Material-ui 与 React 一起使用。我有一个看起来像这样的列表视图:
<List>
<Subheader>List Title</Subheader>
<ListItem primaryText="Option One" />
<Divider />
<ListItem primaryText="Option Two" />
<Divider />
<ListItem primaryText="Option Three" />
</List>
每个项目之间有一个分隔符,但在第一项之前或最后一项之后没有。到目前为止一切顺利。
我刚刚实现了一个简单的包装器,它根据用户权限呈现或不呈现列表项。所以它看起来像这样:
<List>
<Subheader>List Title</Subheader>
<Restricted permission={1}>
<ListItem primaryText="Option One" />
</Restricted>
<Divider />
<Restricted permission={2}>
<ListItem primaryText="Option Two" />
</Restricted>
<Divider />
<Restricted permission={4}>
<ListItem primaryText="Option Three" />
</Restricted>
</List>
Restricted 组件将用户权限与指定权限进行比较,并返回子组件或 null。这一切都有效,但如果未呈现选项,显然会保留分隔符。
我可以将分隔线与 ListItem 一起包装在 Restricted 组件中,在大多数情况下它会呈现我想要的内容,但如果最后一项没有呈现,它会在底部留下一个分隔线。我需要的是一种说法,如果这是列表中的最后一项,则不要渲染分隔线。
目前我的计划是以编程方式生成一组可显示的列表项,然后使用适当的分隔符将其呈现在循环中。但这意味着我将不得不在每个使用它的组件中使用决策逻辑,而不是使用单个包装器。感觉不对。
我是否遗漏了 React/material-ui 的某些方面,可以让我以更优雅的方式实现我想要的?
【问题讨论】:
标签: reactjs material-ui