gos*_*kan 8 reactjs material-ui
我想使用 MUI Grid https://material-ui.com/api/grid/,如果屏幕很小,我想隐藏一项 Grid,所以我找到了一个叫做 Display 的东西https://material-ui.com/system/display/。我的代码看起来像这样
function CRUDView() {
return (
<Grid
container
spacing={1}
direction="row"
justify="center"
alignItems="center"
>
<Grid item xs={12} lg={6}>
<span>XX</span>
</Grid>
<Grid item xs={6} display={{ xs: "none", lg: "block" }} >
<span>YY</span>
</Grid>
</Grid>
);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不起作用(文本YY仍然出现)。我不能在 Grid 中使用 display 吗?如果是,那为什么?
该风格的功能都不会自动支持Grid组件。
利用样式函数的最简单方法是使用Box 组件。该Box组件使所有样式功能(例如display)都可用。该Box组件有一个组件属性(默认为div)以支持Box用于向另一个组件添加样式功能。
该Grid组件同样有一个组件 prop,因此您可以使用Grid将其渲染委托给 a 的aBox或Box委托给 a 的 a Grid。
下面的示例(基于您的代码)显示了使用Box和Grid结合的两种方式。
import React from "react";
import ReactDOM from "react-dom";
import Grid from "@material-ui/core/Grid";
import Box from "@material-ui/core/Box";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles({
gridItem: {
border: "1px solid red"
}
});
function App() {
const classes = useStyles();
return (
<Grid
container
spacing={1}
direction="row"
justify="center"
alignItems="center"
>
<Grid className={classes.gridItem} item xs={12} lg={6}>
<span>XX</span>
</Grid>
<Box
component={Grid}
className={classes.gridItem}
item
xs={3}
display={{ xs: "none", lg: "block" }}
>
<span>YY</span>
</Box>
<Grid
component={Box}
className={classes.gridItem}
item
xs={3}
display={{ xs: "none", lg: "block" }}
>
<span>ZZ</span>
</Grid>
</Grid>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Run Code Online (Sandbox Code Playgroud)
Material UI 公开了一个<Hidden>组件来实现这一点。只需为特定屏幕尺寸包装要隐藏的组件:
<Hidden xsDown >
<p>Hide me on XS view port width.</p>
</Hidden>
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到更多示例。
在MUI v5中,您可以display直接更改该值,Grid而无需再使用Box:
<Grid
item
xs={3}
sx={{
display: { xs: "none", lg: "block" }
}}
>
<span>YY</span>
</Grid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10137 次 |
| 最近记录: |