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

React中如何使用Material UI Tabs默认显示第一个标签页?

解决Material UI Tabs默认不显示第一个标签页的问题

问题核心是状态初始值与标签/面板的value不匹配:你的Tab组件和TabPanel使用字符串类型的value(如"1"、"2"),但状态value的初始值是数字0,导致TabContext找不到对应value的面板,所以页面加载时所有内容都处于隐藏状态。

修复步骤

将状态的初始值改为第一个标签对应的value字符串"1":

// 原代码
const [value, setValue] = React.useState(0);

// 修改后
const [value, setValue] = React.useState("1");

原理说明

TabContext的value属性需要和Tab的value、TabPanel的value完全匹配(包括数据类型),才能激活对应的标签和面板。第一个标签的value是"1",将状态初始值设为"1"后,页面加载时会自动匹配第一个TabPanel,直接显示对应内容。

修改后的关键代码片段

const [value, setValue] = React.useState("1");

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

return (
    <div className="tabs-container">
        <h1 className="tabs-title">Products</h1>
        <ThemeProvider theme={tabsTheme}>
            <Box sx={{width: '100%', typography: 'body1', marginTop: '50px'}}>
                <TabContext value={value}>
                    <Box sx={{borderBottom: 1, borderColor: 'divider', maxWidth: '1200px', margin: '0 auto'}}>
                        <TabList onChange={handleChange}
                                 aria-label="lab API tabs example"
                                 variant="scrollable"
                                 scrollButtons
                                 allowScrollButtonsMobile
                        >
                            <Tab label="Tables & desks" value="1"/>
                            <Tab label="Sofas" value="2"/>
                            <Tab label="Beds" value="3"/>
                            <Tab label="Bookcases & wardrobes" value="4"/>
                            <Tab label="Kitchens" value="5"/>
                        </TabList>
                    </Box>
                    {tabs.map( (tab) =>
                        <TabPanel value={tab.idInString}>
                            <SectionTab key={tab.id} cards={tab.tabCards}/>
                        </TabPanel>
                    )}
                </TabContext>
            </Box>
        </ThemeProvider>
    </div>
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:08:08