Я пытаюсь использовать хук useEffect
в React для прослушивания изменений в местоположении в firestore.
Изначально у меня не было пустого массива в качестве второго пропеллера в методе useEffect, и я не отписался от onSnapshot
слушателя. Через короткую задержку я получил правильные данные в переменной projects
.
Однако, когда у меня возникли экстремальные проблемы с производительностью, я добавил в массив отмены подписки и пустой массив, который я должен был вставить ранее. Странно, но теперь данные не возвращаются, но проблемы с производительностью исчезли.
Что может помешать обновлению переменной отражать данные в firestore?
function useProjects(organisation) {
const [projects, setProjects] = useState({
docs: []
});
useEffect(() => {
if (!organisation.docs[0]) return;
const unsubscribe = firebase.firestore().collection('organisations').doc(organisation.docs[0].id).collection("projects").onSnapshot(snapshot => {
setProjects(snapshot);
});
return () => unsubscribe()
}, []);
return projects
};
const projects = useProjects(organisation);