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

map遍历数组渲染表格时报Cannot read properties of null (reading 'type')错误

报错原因
  • 核心原因是map方法的回调函数语法问题:你使用了带花括号{}的箭头函数写法,但没有显式return需要渲染的JSX元素,导致map最终返回全是undefined的数组。表格组件接收到非法的undefined值,尝试读取其type属性时就会触发该报错。你代码中用逗号运算符连接console.log和JSX的写法,在带花括号的箭头函数作用域下不会自动返回JSX结果,必须手动指定返回值。
  • 潜在问题:你的表头tableHead定义了4列,但是当前行渲染逻辑仅输出了name1个字段,列数不匹配也可能触发表格组件内部异常。
解决方法
  1. 修正map的返回逻辑,两种修正方式二选一即可:
// 方式1:去掉花括号,使用箭头函数隐式返回,可保留现有逗号运算符写法
{
  this.state.tableData.value.map((rowData, index) => (
    console.log('test', rowData),
    <TableWrapper key={index} style={styles.row}>
      {
        rowData.map((item, idx) => (
          console.log('item', item.name),
          <Text textStyle={styles.text} key={idx}>{item.name} </Text>
        ))
      }
      {/* 补全剩余列的渲染逻辑,和表头4列对齐 */}
    </TableWrapper>
  ))
}

// 方式2:保留花括号,添加显式return语句
{
  this.state.tableData.value.map((rowData, index) => {
    console.log('test', rowData)
    return (
      <TableWrapper key={index} style={styles.row}>
        {
          rowData.map((item, idx) => {
            console.log('item', item.name)
            return <Text textStyle={styles.text} key={idx}>{item.name} </Text>
          })
        }
        {/* 补全剩余列的渲染逻辑,和表头4列对齐 */}
      </TableWrapper>
    )
  })
}
  1. 补全行的列数,和表头的4列对应,比如补充渲染event1.test、event2、event3三个字段,避免表格组件因为列数不匹配报错。
  2. 给内层map的渲染元素添加唯一key属性,不要复用外层的index,避免React渲染警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:04