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

React+TypeScript中JSX子元素类型不匹配报错求助

问题原因与解决方案

错误根源

你在JSX中使用的a.map((aa) => console.log(11))会返回一个包含3个undefined的数组——因为console.log没有返回值,默认返回undefined。这3个undefined会被当作<div>的子元素,但它们并非有效的React Node类型,同时多个无效节点的存在触发了TypeScript的类型校验错误。

解决方案

根据你的需求选择对应方案:

方案1:仅需遍历执行打印操作

如果只是想遍历数组执行console.log,不要把遍历逻辑放在JSX内部,移到return语句之外即可:

import '../styles/sidebar.css'

const Sidebar: React.FC = () => {
  const a = [1,2,3]
  // 在return外部执行遍历打印
  a.forEach((aa) => console.log(11))
  
  return (
    <div className="sidebar">
      <ul className="sdebar_lst">
        <li className="lsthead">Departments</li>
        <li id="it" className="list_elm1">IT</li>
        <li id="hr" className="list_elm1">Human Resources</li>
        <li id="md" className="list_elm1">MD</li>
        <li id="sales" className="list_elm1">Sales</li>
      </ul>
    </div>
  )
}

export default Sidebar

方案2:通过map渲染React元素

如果需要遍历数组渲染元素,确保map的回调返回有效的React节点,同时给每个元素添加唯一的key属性:

import '../styles/sidebar.css'

const Sidebar: React.FC = () => {
  const a = [1,2,3]
  
  return (
    <div className="sidebar">
      {
        a.map((aa) => (
          // 返回有效的React节点,并添加唯一key
          <span key={aa}>元素{aa}</span>
        ))
      }
      <ul className="sdebar_lst">
        <li className="lsthead">Departments</li>
        <li id="it" className="list_elm1">IT</li>
        <li id="hr" className="list_elm1">Human Resources</li>
        <li id="md" className="list_elm1">MD</li>
        <li id="sales" className="list_elm1">Sales</li>
      </ul>
    </div>
  )
}

export default Sidebar

额外提示

React组件名建议使用大驼峰命名(如Sidebar而非sidebar),这是React的规范约定,能避免潜在的组件识别问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:55:24