Код в
componentDidUpdate не верный, исправить можно так:
componentDidMount() {
const ideas = firebase.database().ref("items");
let arr = [];
ideas.on("value", snapshot => {
let items = snapshot.val();
for (let item in items) {
arr.push({
id: item,
text: items[item].text
});
}
this.props.renderIdeas(arr);
});
}
Причина -
ассинхронность. Он у вас рендерил компонент до завершения колбека
on value. Так как ссылку на массив вы передали, то в консоли он отобразился и обновился, но
render прошел с пустым.
Перебирать массивы
for in не рекомендуется, может быть нарушен порядок элементов. Для объектов так же лучше использовать
Object.keys(obj).mapObject.keys(obj).map(key => ({ id: key, text: obj[key].text }));
reducer для
render использовать не надо.