Elementy do tablicy wstawiasz asynchronicznie, natomiast console.log wyświetla na bieżąco aktualizowaną tablicę - a nie taką, jaka była w momencie wywołania console.log. Kod wygląda na React, a więc asynchroniczne akcje powinieneś wykonywać wewnątrz hooka useEffect, zaś sama tablica powinna być stanem (jeśli chcesz ją renderować):
import { useState, useEffect } from 'react';
import { useAuth } from '../context/AuthContext';
import { getFirestore, collection, getDocs } from "firebase/firestore";
const Tasks = () => {
const { currentUser } = useAuth();
const [tasks, setTasks] = useState([]); // tablica jako stan
useEffect(() => {
getDocs(collection(getFirestore(), 'userTasks')).then(snap => {
snap.docs.forEach(ele => {
if(ele.data().email === currentUser.email) {
setTasks(prevTasks => [...prevTask, { id: ele.id, ...ele.data() } ]); // update stanu tablicy
}
});
}).catch(err => console.log(err));
}, []);
/*
[
{
"id": "pNH0ntPSVHdqqH5de11o",
"tasks": {
"name": "Work",
"desc": "go to work"
},
"email": "test@test.com"
}
]
*/
return (
<main className="content adder">
<div className="inner">
<h1>Add Task</h1>
<article className="main">
<ul>
</ul>
</article>
<div className="opts">
<input type="button" value="Add Task" />
</div>
</div>
</main>
);
}
export default Tasks;