Кажется, вам просто нужно правильно определить ваши данные.Вы хотите отобразить array
из ListItems
.Каждый из этих ListItem
имеет title
, statusWeek
и color
, а также numWeeks
.
. Учитывая это, ваши данные должны быть массивом объектов с этими свойствами,например:
const data = [
{title: '4 Weeks', statusWeek: '2' , color: 'red', numWeeks: 4},
{title: '12 Weeks', statusWeek: '4' , color: 'blue', numWeeks: 12}]
Затем, когда вы делаете
data.map(el => <ItemList {...el} />)
ItemList получает каждый элемент массива с четырьмя props
(цвет, заголовок, статус, количество недель),так что вы просто подключаете их в свой компонент там, где они нужны, например (обратите внимание на реквизиты):
<ListItem dense={this.props.dense} alignItems="flex-start">
<ListItemText
primary={
<React.Fragment>
Predicted score - <strong>{this.props.title}</strong>
</React.Fragment>
}
secondary={
<React.Fragment>
<Typography component="span" color="textPrimary">
Predicted date{" "}
<i
style={{ "font-size": "1em" }}
className="zmdi zmdi-calendar mx-2"
/>{" "}
{moment(data.vulnerabilityDate)
.add(this.props.numWeeks, "weeks")
.format("MMM DD, YYYY")}
</Typography>
</React.Fragment>
}
/>
<ListItemSecondaryAction>
<span
style={{
"font-size": "1rem",
"background-color": this.props.color,
"min-width": "45px"
}}
className="vulnerability badge badge-primary"
>
{this.props.statusWeek}
</span>
</ListItemSecondaryAction>
</ListItem>
Это должно сработать, это просто еще один подход с данными / реквизитами, я не знаю, еслиэто работает для вас.
Ура!