首页 > 解决方案 > Material-UI Grid在使用显示时不隐藏

问题描述

我想使用 MUI ,如果屏幕很小,Grid我想隐藏一个项目,所以我找到了一个叫做Display的东西。我的代码如下所示:Grid

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>
  );
}

我不明白为什么它不起作用(文本YY仍然出现)。我不能用Grid可能的显示器吗?如果是,那为什么?

标签: reactjsmaterial-ui

解决方案


组件不会自动支持样式功能Grid

利用样式功能的最简单方法是使用Box 组件。该Box组件使所有样式功能(例如display)可用。该Box组件有一个组件道具(默认为div),以支持使用Box将样式功能添加到另一个组件。

Grid组件同样有一个组件 prop,因此您可以有一个Grid将其渲染委托给 a 的 aBox或一个Box委托给 a 的 a Grid

下面的示例(基于您的代码)显示了使用BoxGrid一起使用的两种方式。

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);

编辑使用带有网格的系统样式函数


推荐阅读