You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Material UI Tabs默认无选中项且避免控制台报错?

解决方案

你可以通过Material UI Tabs自带的allowUnselected属性实现需求,修改步骤如下:

  • 给<Tabs>组件添加allowUnselected={true}属性,该属性官方默认值为false,开启后即允许标签栏存在无选中标签的状态,传入不匹配任何Tab的value不会触发报错
  • 将state默认值改为false或null(只要是不在你现有Tab的value集合[0,1,2]中的值都可)

修改后的完整代码如下:

export default function SimpleTabs() {
  const classes = useStyles();
  const [value, setValue] = React.useState(false);  // 改为false作为默认无选中的标识值
  const handleChange = (event, newValue) => {
    setValue(newValue);
  };
  return (
    <div className={classes.root}>
      <AppBar position="static">
        {/* 添加allowUnselected属性 */}
        <Tabs value={value} onChange={handleChange} allowUnselected={true} aria-label="simple tabs example">
          <Tab label="Item One" {...a11yProps(0)} />
          <Tab label="Item Two" {...a11yProps(1)} />
          <Tab label="Item Three" {...a11yProps(2)} />
        </Tabs>
      </AppBar>
      <TabPanel value={value} index={0}>
        Item One
      </TabPanel>
      <TabPanel value={value} index={1}>
        Item Two
      </TabPanel>
      <TabPanel value={value} index={2}>
        Item Three
      </TabPanel>
    </div>
  );
}

原报错原因:默认未开启allowUnselected时,Tabs组件强制要求传入的value必须匹配到某个子Tab的value值,你传入的undefined没有对应的Tab,因此触发合法性校验报错。

内容的提问来源于stack exchange,提问作者AlcoholAllergy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:06:01