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

React中如何通过字符串名称获取数组内的导入对象?

解决通过字符串名称访问对应分类对象的问题

这问题我之前做React项目时也踩过坑!你现在的核心问题是用数组存储分类对象,但数组是靠数字索引(0、1、2...)访问的,而你通过select拿到的是字符串'Sports'/'Kids',用这个字符串当数组索引自然找不到对应对象,所以返回undefined。

最简单的解决方案:把categories从数组改成键值对对象

把原来的数组结构换成以字符串名称为键、对应对象为值的普通对象:

// 替换原来的数组定义
const categories = {
  Sports: Sports,
  Kids: Kids
};

这样之后,你在onChange事件里的代码就能正常工作了:

const category = e.currentTarget.value;
console.log(categories[category]); // 现在就能拿到对应的Sports/Kids对象啦

额外优化:避免维护两份分类数据

你现在单独维护了categoriesLoop数组来渲染select选项,其实可以直接从新的categories对象中提取键来生成,这样以后新增分类时只需要修改categories对象,不用同时改categoriesLoop,避免数据不一致:

// 自动生成选项所需的字符串数组
const categoriesLoop = Object.keys(categories);

然后渲染select的代码可以保持不变(记得加key属性哦,React列表渲染要求):

categoriesLoop.map(category => <option key={category}>{category}</option>)

这样一套下来,既解决了字符串访问对象的问题,还减少了重复代码的维护成本~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:32:37