我有一个maps
和array
的函数,并检查每条记录的状态。每月的状态为1,2或3,在if
语句中进行检查。然后这些返回一些改变图标颜色的CSS。
_infoIconStyle() {
//test array
let monthArr = [
{month:'jan', status: 1},
{month:'feb', status: 2},
{month:'mar', status: ''},
{month:'apr', status: 1},
{month:'may', status: 2},
{month:'jun', status: ''},
{month:'jul', status: 1},
{month:'aug', status: 2},
{month:'sep', status: ''},
{month:'oct', status: 1},
{month:'nov', status: 2},
{month:'dec', status: ''}
]
//
monthArr.map((monthRecord) => {
if(monthRecord.status == 1) {
const infoStyle = {
color: "red"
};
return infoStyle
} else if(monthRecord.status == 2) {
const infoStyle = {
color: "orange"
};
return infoStyle
} else {
const infoStyle = {
color: "green"
};
return infoStyle
}
})
}
我在没有map
的情况下看到了我在console.log中的预期。但是,自从我添加了map
后,没有返回CSS
。
我没有长时间使用ES6
,我确信这很简单。有人可以帮忙..谢谢你。
答案 0 :(得分:0)
也许这对你来说是一个答案,我认为你的回报还不够,你没有默认状态,在我看来你应该尝试类似的东西,但我也是ES6的新手,只是一个提示:
let newcssvar = monthArr.map((monthRecord) => {
let infoStyle={color:"defaulcolor-whatever"};
if(monthRecord.status == 1) {
infoStyle = {
color: "red"
};
return infoStyle
} else if(monthRecord.status == 2) {
infoStyle = {
color: "orange"
};
return infoStyle
} else {
infoStyle = {
color: "green"
};
return infoStyle
}
return infoStyle
})
答案 1 :(得分:0)
因为您没有从_infoIconStyle
函数返回任何内容。另一件事是 map将返回一个数组而不是一个css对象。
返回map的结果:
_infoIconStyle(){
....
return monthArr.map((monthRecord) => { //use return here
....
}
....
}
如果您返回地图结果,将返回_infoIconStyle
函数:
[{...}, {...}, {...}, {..}, {...}, ....]
答案 2 :(得分:0)
因此map
函数实际上返回另一个数组。在您的情况下,您调用map函数但不将输出分配给任何东西。如果您要将其分配给变量,那么您将拥有一系列颜色。你可以尝试的一件事是拥有一个状态和颜色的字典,而不是使用map来获得一个颜色数组。您还可以映射初始数组并将颜色属性附加到monthArr
变量中的每个对象。
答案 3 :(得分:0)
monthArr.map(monthRecord(month, i) => {
if(month[i].status == 1) {
return month[i].color = "red"
};
return monthArr
这种类型的函数会在循环中为每个月添加相应的颜色属性。我只写了一个片段,因为我没有时间在工作之前提供完整的答案。您需要一个额外的功能来创建样式表。您是否尝试使用JSX内联呈现样式?我需要更多信息以获得更好的例子。如果您尝试创建新对象而不是修改当前对象,则可以将此功能与object.Assign一起使用..