gpt4 book ai didi

reactjs - React - 在 map 功能中生成不同的图标

转载 作者:行者123 更新时间:2023-12-02 16:26:53 25 4
gpt4 key购买 nike

我有一个侧边栏组件,其列表项是在 map 函数内部生成的(从 api 获取的电影类型)。我想在每种电影类型旁边有一个不同的图标,但一直无法找到一种方法来为每次运行的 map 功能创建一个不同的图标。

我的想法是第 1 步:按照我希望它们显示的顺序排列我想要显示的图标。

 const icons = [
"AiOutlineHome ",
"FaUserNinja",
"GiSwordman",
"GiBabyFace",
"FaLaughBeam",
"GiPistolGun",
"GiPineTree",
"GiDramaMasks",
"GiFamilyHouse",
"GiElfEar",
"GiScrollUnfurled",
"GiScreaming",
"GiMusicalNotes",
"GiMagnifyingGlass",
"FaRegKissBeam",
"GiMaterialsScience",
"GiHalfDead",
"GiGreatWarTank",
"GiCowboyBoot",
];

然后在我的 map 函数中为每个列表项生成一个不同的图标

{movieGenres.map((genre) => {
return (
<li key={genre.id} className="nav-text">
<button
className="genre-btn"
onClick={() => genreSelectionHandler(genre.id)}
>
*<GENERATE ICON HERE />*
<span className="nav-item-title">{genre.name}</span>
</button>
</li>
);
})}

是否可以实用地创建这样的组件?这样,如果我想要不同的图标,就可以避免单独创建每个列表项。

最佳答案

您可以只获取您的流派索引来获取图标。索引是 map() 函数回调的第二个参数:

{movieGenres.map((genre, idx) => (
<li key={genre.id} className="nav-text">
<button
className="genre-btn"
onClick={() => genreSelectionHandler(genre.id)}
>
<Icon icon={icons[idx]} />
<span className="nav-item-title">{genre.name}</span>
</button>
</li>
))}

Icon 组件会根据您使用的图标类型呈现图标。

编辑:

因为你想使用 react-icons 你需要导入实际的图标组件而不是仅仅使用字符串:

import {AiOutlineHome} from "react-icons/ai";
import {FaUserNinja} from "react-icons/fa";
// ....

const icons = [
AiOutlineHome,
FaUserNinja,
// ...
];

并渲染它们:

{movieGenres.map((genre, idx) => {
// must be a capitalized name in order for react to treat it as a component
const Icon = icons[idx];

return (
<li key={genre.id} className="nav-text">
<button
className="genre-btn"
onClick={() => genreSelectionHandler(genre.id)}
>
<Icon />
<span className="nav-item-title">{genre.name}</span>
</button>
</li>
)
})}

关于reactjs - React - 在 map 功能中生成不同的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64277565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com