Вы запускаете .map
на Object.keys(this.props.filters)
, который является Array
именами ключей объекта, например - ['basen', 'koszykowka', 'pilka_nozna' ....]
.
В вашем console.log(el)
вы можете увидеть его basen
(в нижнем регистре). Вам необходимо изменить данные, чтобы использовать их в вашем методе .map()
. По этой причине вы получаете undefined
при попытке получить доступ к active
или name
.
Я думаю, что этот код подойдет вам -
Object.keys(this.props.filters).map(x => this.props.filters[x]).map((el, i) => {...}
Пример кода для создания массива из объекта -
var filter = {
basen: {
active: true,
name: 'BASEN'
},
koszykowka: {
active: true,
name: 'KOSZYKÓWKA'
},
pilka_nozna: {
active: true,
name: 'PIŁKA NOŻNA'
},
pilka_reczna: {
active: true,
name: 'PIŁKA RĘCZNA'
},
siatkowka: {
active: true,
name: 'SIATKÓWKA'
},
tenis: {
active: true,
name: 'TENIS'
}
};
var newFilter = Object.keys(filter).map(x => filter[x])
console.log(newFilter)
Второй подход -
const { filters } = this.props;
{Object.keys(filters).map((el, i) => {
console.log(el)
return(
<ObjectFiltersElement
key={i}
name={filters[el].name}
active={filters[el].active}
changeFilterHandler={(el) => (this.changeFilterHandler(el))}
/>
)
})}