首页 > 解决方案 > 材质 UI 第一个选项卡未显示

问题描述

我遇到了一个奇怪的问题,即第一个选项卡显示不正确。我已经尝试过并添加了第二个选项卡,它显示得很好。我基本上使第二个标签具有我想要的第一个标签。因为我认为我可能犯了一个错误,所以我删除了第一个选项卡,只是让第二个选项卡成为第一个选项卡……只是为了不显示。这是我的代码:

<Tabs
  value={value}
  onChange={handleChange}
  indicatorColor="primary"
  className={classes.tabContainer}
 >
    <Tab label="Today's Picture" />
    <Tab
      className={classes.tab}
      label="Today's Picture"
      component={Link}
      onClick={refreshPage}
      to="/"
    />
    <BasicDatePicker date={props.date} setDate={props.setDate} />
 </Tabs>

第一个选项卡是我尝试查看它是否会显示,第二个选项卡是我想要显示为第一个选项卡的内容。发生的奇怪事情是,当它没有显示我的第一个选项卡时,至少将鼠标悬停在它上面会显示我设置的样式,但不将鼠标悬停在它上面会使它看起来好像什么都没有。

标签: javascriptreactjsmaterial-ui

解决方案


我已经从材料 UI 站点复制了这段代码,它会正常工作,试试这个:

    function TabPanel(props) {
  const { children, value, index, ...other } = props;

  return (
    <div
      role="tabpanel"
      hidden={value !== index}
      id={`simple-tabpanel-${index}`}
      aria-labelledby={`simple-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: `simple-tab-${index}`,
    'aria-controls': `simple-tabpanel-${index}`,
  };
}

export default function BasicTabs() {
  const [value, setValue] = React.useState(0);

  const handleChange = (event, newValue) => {
    setValue(newValue);
  };

  return (
    <Box sx={{ width: '100%' }}>
      <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
        <Tabs value={value} onChange={handleChange} aria-label="basic tabs example">
          <Tab label="Item One" {...a11yProps(0)} />
          <Tab label="Item Two" {...a11yProps(1)} />
          <Tab label="Item Three" {...a11yProps(2)} />
        </Tabs>
      </Box>
      <TabPanel value={value} index={0}>
        Item One
      </TabPanel>
      <TabPanel value={value} index={1}>
        Item Two
      </TabPanel>
      <TabPanel value={value} index={2}>
        Item Three
      </TabPanel>
    </Box>
  );
}

推荐阅读