React中如何将TMDB API的流派ID转换为对应流派名称?
如何在React中将TMDB电影流派ID转换为名称字符串?
首先你需要维护一份流派ID与名称对应关系的数组(可以从TMDB官方文档获取完整列表,或基于你提供的示例扩展):
const genreList = [ { id: 18, name: "drama" }, { id: 12, name: "adventure" }, { id: 53, name: "horror" }, // 按需添加更多流派 ];
为了提升ID查找效率,推荐把数组转换成键值对对象:
const genreMap = genreList.reduce((map, genre) => { map[genre.id] = genre.name; return map; }, {});
接下来修改你的ResultUI组件,完成ID到名称的转换:
const ResultUI = ({ film }) => { // 定义流派映射(可提取到组件外部复用) const genreList = [ { id: 18, name: "drama" }, { id: 12, name: "adventure" }, { id: 53, name: "horror" }, ]; const genreMap = genreList.reduce((map, genre) => { map[genre.id] = genre.name; return map; }, {}); // 将流派ID数组转换为名称数组 const genreNames = film.genre_ids.map(id => genreMap[id] || "Unknown"); return ( <div className="single_result_container"> <img src={`https://www.themoviedb.org/t/p/w1280/${film.poster_path}`} alt={film.title || film.name} /> <div className="bio"> <p className="title">{film.title || film.name}</p> <p>{film.overview}</p> <p>{film.vote_average}</p> {/* 渲染逗号分隔的流派名称 */} <p>{genreNames.join(", ")}</p> </div> </div> ); }; export default ResultUI;
额外提示:
- 若流派列表较长,建议把
genreList和genreMap移到组件外部,避免每次渲染重复生成,优化性能。 || "Unknown"用于处理未匹配到的ID,防止页面显示undefined。- 使用
join(", ")把数组转为字符串,让显示效果更整洁。
内容的提问来源于stack exchange,提问作者queercoded
相关产品推荐
相关产品推荐

