React动态渲染图标组件报错:<ICONCAR>等标签未被识别
解决React动态渲染图标组件的报错问题
问题核心是直接用字符串作为组件名渲染不符合React规则——React会把<ICONCAR>这类字符串识别成普通HTML标签,而非你自定义的组件,所以会报未识别错误。直接写<ICONHOME>能正常显示,是因为你导入了对应的组件引用,React能识别这是自定义组件。
解决方法只需给字符串和组件做个映射关联:
- 导入目标图标组件
在MyFile.tsx中先导入MyIcons里的所有需要的组件:
import { ICONCAR, ICONHOME } from './MyIcons';
- 创建组件映射对象
把字符串名称和实际组件一一对应:
const IconComponentMap = { ICONCAR, ICONHOME };
- 通过映射获取组件并渲染
用x.iconName从映射中拿到真实组件,再进行渲染(注意变量名必须大写开头,这是React识别自定义组件的要求):
// 根据字符串获取对应的组件 const IconComponent = IconComponentMap[x.iconName]; // 增加容错判断,避免传入无效字符串导致报错 if (!IconComponent) { return null; // 也可以返回一个默认图标组件 } // 正常渲染组件 return <IconComponent />;
额外注意:
- 要保证
x.iconName的字符串值和映射对象里的key完全匹配(比如都是大写的ICONCAR) - 后续新增图标时,只需在映射对象里添加对应的键值对,无需修改渲染逻辑
内容的提问来源于stack exchange,提问作者hasok22673
相关产品推荐
相关产品推荐

