You need to enable JavaScript to run this app. 使用TS枚举作为useState泛型时出现React组件无效报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用TS枚举作为useState泛型时出现React组件无效报错如何解决

问题根因

你遇到的报错和useState搭配枚举的写法完全无关,错误原因是你定义的枚举SomeType和项目中用于路由注册的屏幕组件重名了。当路由加载时枚举被误识别为屏幕组件传入了component属性,而枚举本身不是合法的React组件,因此触发了该报错。

解决方案

  • 调整枚举的命名,避免和已有的路由屏幕组件重名,比如修改为SomeTypeEnum、ElementType等不会冲突的名称即可
  • 也可以修改重名的路由屏幕组件的名称,保证二者命名不重复

补充说明

你写的枚举配合useState的代码本身没有语法错误,也不需要额外配置,是合法的TS写法:

export enum SomeType {
  WATER,
  AIR,
  FIRE,
}
const [someType, setSomeType] = useState<SomeType>(SomeType.WATER)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:36:02