【发布时间】:2020-05-09 12:08:42
【问题描述】:
我正在尝试使用 Grid 组件在 Material-UI 中实现此布局。
我用红色突出显示了容器边框,以便更清楚地看到边界在哪里。
- 添加按钮应位于容器的右端
- 芯片应在左侧对齐,并在水平方向占用尽可能多的空间
- 筹码堆叠时,添加按钮应与容器底部垂直对齐
我已经设法使用嵌套网格来实现这一点,如下例所示:
import React, { useState } from 'react'
import { Button, Grid, Chip, Box } from '@material-ui/core'
export default function App() {
const [chips, setChips] = useState(1)
const addChip = () => setChips(c => c + 1)
const removeChip = i => setChips(c => c - 1)
const renderChips = () =>
Array(chips)
.fill(null)
.map((_, i) => (
<Grid item key={i}>
<Chip label={`Chip ${i}`} onDelete={() => removeChip(i)} />
</Grid>
))
return (
<Box border="1px solid red">
<Grid container wrap="nowrap" spacing={2}>
<Grid item xs>
<Grid container spacing={1}>
{renderChips()}
</Grid>
</Grid>
<Grid item display="flex" component={Box}>
<Grid container alignItems="flex-end">
<Grid item>
<Button variant="contained" color="primary" onClick={addChip}>
Add
</Button>
</Grid>
</Grid>
</Grid>
</Grid>
</Box>
)
}
我希望避免不必要地嵌套 Grid 组件。更具体地说,我想使用<Grid item container> 而不是包含<Grid item> 的<Grid container>,但是使用这种方法我无法实现这种扩展左侧芯片部分并保持右侧按钮的布局,同时保持它垂直对齐底部。
【问题讨论】:
标签: css layout material-ui