Проблема в том, что вы без необходимости используете Object.keys
перед отображением массива состояний. Удали это.
Object.keys(projects)
берет ваш массив и создает новый с ключами в качестве значений. Поскольку ключи в массиве являются индексами, ваши значения становятся [0,1]
.
Пример:
const myArray = ['value1', 'value2'];
console.log(Object.keys(myArray))
Вы отображаете вывод Object.keys
, поэтому независимо от того, что вы делаете внутри функции отображения, он всегда будет возвращать массив индексов.
Во-вторых, , как указал @EmileBergeron, вы изменяете состояние. Это, по-видимому, не является непосредственной причиной вашей проблемы, но ее нужно исправить.
Чтобы исправить, измените на это:
const data = querySnapshot.docs.map(doc => doc.data());
this.setState({ projects: data });
ForEach не кажется необходимым, так как вы Используете все значения, ничего не меняя. Установка состояния на data
должна быть эквивалентной.