【问题标题】:Only Show Text on Selection - MUI仅在选择时显示文本 - MUI
【发布时间】:2022-01-01 05:50:35
【问题描述】:

我只想在选择时显示选项卡的文本。 这来自 MUI 文档。如何仅在选择时显示标签?我假设我可以使用下面的状态并以某种方式翻译它,颜色如何与元素一起出现。

请查看我尝试建立的代码。我是这个框架的新手。如果有人可以提供提示,请告诉我!

function TabPanel(props) {
    const { children, value, index, ...other } = props;
  
    return (
      <div
        role="tabpanel"
        hidden={value !== index}
        id={`vertical-tabpanel-${index}`}
        aria-labelledby={`vertical-tab-${index}`}
        {...other}
      >
        {value === index && (
          <Box sx={{ p: 3 }}>
            <Typography>{children}</Typography>
          </Box>
        )}
      </div>
    );
  }
  
  TabPanel.propTypes = {
    children: PropTypes.node,
    index: PropTypes.number.isRequired,
    value: PropTypes.number.isRequired,
  };
  
  function a11yProps(index) {
    return {
      id: `vertical-tab-${index}`,
      'aria-controls': `vertical-tabpanel-${index}`,
    };
  }

//

const JobPostBuild = () => {
    const [value, setValue] = React.useState(0);

    const handleChange = (event, newValue) => {
      setValue(newValue);
    };
  
    return (
      <Box
        sx={{ flexGrow: 1, bgcolor: 'gray', display: 'flex', height: 500 }} 
      >
       <Tabs
        orientation="vertical"
        variant="scrollable"
        centered
        value={value}
        onChange={handleChange}
        sx={{ borderRight: 1, borderColor: 'divider' }}
      >
        <Tab icon={<WorkIcon/>} label={"Role"} {...a11yProps(0)} />
        <Tab icon={<AccountBoxIcon/>} label="People" {...a11yProps(1)} />
        <Tab icon={<ViewCompactIcon/>} label="Build" {...a11yProps(2)} />
        <Tab icon={<PostAddIcon/>} label="Post" {...a11yProps(3)} />

      </Tabs>

      <TabPanel value={value} index={0}>
        Role
      </TabPanel>
      <TabPanel value={value} index={1}>
        People
      </TabPanel>
      <TabPanel value={value} index={2}>
        Build
      </TabPanel>
      <TabPanel value={value} index={3}>
        Post
      </TabPanel>

    </Box>
    );
  }

export default JobPostBuild

很高兴通过 Discord 讨论这个问题,请告诉我!

【问题讨论】:

    标签: css reactjs material-ui


    【解决方案1】:

    您可以查看选中标签的value来设置标签标签的显示条件:

    &lt;Tab label={value === 0 ? "Role" : ""} {...a11yProps(0)} /&gt;

    Demo

    【讨论】:

    • 谢谢@Dmitriif!这按我的预期工作。我还尝试将导航栏中的选项卡居中,但是如果方向=垂直,它似乎不起作用。任何想法
    • 您应该将variant="fullWidth" 添加到您的Tabs 组件以使元素居中。我刚刚修改了我的演示来展示它。
    • 嗨 Dmitriff,它似乎没有将标签部分与容器的其余部分居中。请参阅参考图片,类似于 align-items center,使其位于组件其余部分的中心:gyazo.com/a99ce5229bf3139d0a1d4bbc79d045a5
    • 然后你应该像往常一样指定标签容器和中心元素的高度。查看演示。
    • 救命稻草!非常感谢德米特里夫。我真的很感谢帮助!老实说最好的,谢谢!我在不断地学习。如果你想添加我的不和谐让我知道:)
    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 2018-10-24
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多