gpt4 book ai didi

javascript - 根据对象数组中的条目向循环生成的元素添加 css 类

转载 作者:行者123 更新时间:2023-11-30 14:02:54 25 4
gpt4 key购买 nike

我有几个用于环境 (envList) 和团队 (teamsList) 的对象,如下所示:

const envList = {
dev: "DEV",
sit: "SIT",
uat: "UAT",
qa: "QA",
prod: "PROD"
};

const teamsList = {
a: "Team A",
b: "Team B",
c: "Team C",
d: "Team D"
};

我正在遍历它们以将它们显示为(某种)表格:

<div className="App">
{Object.keys(teamsList).map((key, i) => (
<div className="team" key={i}>
<span className="teamname">{teamsList[key]}</span>
{Object.keys(envList).map((key, i) => (
<span className="env-th-cell" key={key}>
{envList[key]}
</span>
))}
</div>
))}
</div>

注意:以上是JSX,但并不是真正的React问题。只是在团队和环境上嵌套 map 。

生成类似

的输出
Team A DEV SIT UAT QA PROD
Team B DEV SIT UAT QA PROD
Team C DEV SIT UAT QA PROD
Team D DEV SIT UAT QA PROD

我需要添加一个 CSS 类 (.red) 以突出显示基于以下 redTeams 数组的任何团队的环境:

const redTeams = [
{
envIndex: 0,
team: "Team A"
},
{
envIndex: 0,
team: "Team B"
},
{
envIndex: 4,
team: "Team B"
}
{
envIndex: 3,
team: "Team C"
},
{
envIndex: 4,
team: "Team C"
}
];

如果 teamenvIndex 存在于 redTeams 中,我想在该环境的跨度上添加一个类。 redTeams 中的一个团队可能有多个条目。

Team A DEV(red) SIT UAT QA      PROD
Team B DEV(red) SIT UAT QA PROD (red)
Team C DEV SIT UAT QA(red) PROD
Team D DEV SIT UAT QA PROD(red)

上面的输出是为了表示,没有(红色),而是在span中添加了一个class

这是一个沙箱 https://codesandbox.io/s/pwjxy82j5x?fontsize=14

关于该方法的一些建议将很有帮助并受到赞赏

最佳答案

需要在渲染时有条件地添加className。在此之前,您需要为 envIndex 到 env 映射创建一个映射

<div className="App">
{Object.keys(teamsList).map((key, i) => {
const teams = redTeams.filter(team => teamsList[key] === team.team);
return (
<div className="team" key={i}>
<span className="teamname">{teamsList[key]}</span>
{Object.keys(envList).map((key, i) => {
let className = "env-th-cell";
if (
teams &&
teams.findIndex(
t => envList[key] === indexToEnvMap[t.envIndex]
) > -1
) {
className += " red";
}
return (
<span className={className} key={key}>
{envList[key]}
</span>
);
})}
</div>
);
})}
</div>

Working demo

关于javascript - 根据对象数组中的条目向循环生成的元素添加 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999486/

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