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

React中创建值为JSX组件的键值对对象遇语法错误求解决

在React中创建值为JSX组件的键值对对象

你的代码存在语法和类型匹配问题,以下是问题分析和修正方案:

问题分析

  1. 类型不兼容:ActiveTabType定义的是键值对对象类型,但你把TabsContent写成了函数,两者类型不匹配。
  2. 函数语法错误:函数内部直接写键值对却没有返回语句,同时{(<AnnouncementTemplates services={services} />)}里的外层大括号是多余的,会被解析为代码块而非JSX元素。
  3. 对象写法错误:函数内的键值对未包裹在对象大括号中,也没有通过return返回目标对象。

修正方案

如果需要根据传入的services动态生成包含JSX组件的对象,需定义返回ActiveTabType类型的函数:

type ActiveTabType = {
    [key: string]: JSX.Element;
};

// 定义接收services参数并返回目标对象的函数类型
type TabsContentFn = (services: any) => ActiveTabType;

export const TabsContent: TabsContentFn = (services) => {
    return {
        [SettingsTabNames.AnnouncementTemplates]: <AnnouncementTemplates services={services} />,
        [SettingsTabNames.AnnouncementCards]: <AnnouncementCards />
    };
};

如果不需要动态参数,直接创建静态对象即可:

type ActiveTabType = {
    [key: string]: JSX.Element;
};

export const TabsContent: ActiveTabType = {
    [SettingsTabNames.AnnouncementTemplates]: <AnnouncementTemplates />,
    [SettingsTabNames.AnnouncementCards]: <AnnouncementCards />
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:24:54