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

React MUI Tabs组件无法渲染Array.map遍历的数据问题排查

解决React Tabs组件中数组map遍历无内容的问题

你遇到的问题和Tabs组件的工作原理无关,纯粹是数组map回调函数没有返回要渲染的JSX元素导致的。

看你代码里第一个TabPanel的map部分:

{chemicals.map((chemical) => {
  <ListItem>
<ListItemText>{chemical.ChemicalName}</ListItemText>
</ListItem>
})}

这里用大括号{}包裹回调内容,但没有写return语句,所以map函数每次迭代都返回undefined,最终渲染出空数组,自然看不到内容。而第二个标签页是静态文本,所以能正常显示。

两种修复方式:

  1. 添加return语句:
{chemicals.map((chemical) => {
  return (
    <ListItem key={chemical.ChemicalName}>
      <ListItemText>{chemical.ChemicalName}</ListItemText>
    </ListItem>
  )
})}
  1. 使用隐式返回(把大括号换成小括号):
{chemicals.map((chemical) => (
  <ListItem key={chemical.ChemicalName}>
    <ListItemText>{chemical.ChemicalName}</ListItemText>
  </ListItem>
))}

注意:给map生成的元素加上唯一的key属性,这是React的要求,能避免警告并优化渲染性能,这里可以用每个chemical的ChemicalName作为key(假设名称唯一)。

修复后的第一个TabPanel完整代码:

<TabPanel value={value} index={0}>
  <Box
    sx={{
      marginTop: 8,
      display: 'flex',
      flexDirection: 'column',
      alignItems: 'center',
    }}
  >
    <List>
      {chemicals.map((chemical) => (
        <ListItem key={chemical.ChemicalName}>
          <ListItemText>{chemical.ChemicalName}</ListItemText>
        </ListItem>
      ))}
    </List>
  </Box>
</TabPanel>

总结:这个错误和Tabs组件无关,是JavaScript数组map函数的基础用法问题——回调函数必须返回要渲染的元素,否则React没有可渲染的内容。你换react-tabs库遇到同样问题,就是因为这个核心错误没解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:54:40