Я создаю простое приложение реагирования для тестирования Google Firebase. Кто-нибудь знает, как работает метод onSnapshot
? Я имею в виду, что это так быстро (например, мгновенно), даже когда я переключаю сеть на медленный 3G в devtools, это все еще быстро. Я заметил на вкладке XHR, когда приложение отправило запрос в firebase, запрос все еще находится на рассмотрении, но onSnapshot
уже сработал и изменил состояние в моем приложении реакции. Я думал, что он подождет до тех пор, пока не получит ответ от firebase, но это не так.
.firestore()
.collection("expense")
.onSnapshot((snapshot) => {
const newExpense = snapshot.docs.map((doc) => {
return {
id: doc.id,
...doc.data(),
};
});
//set state is fired, but request is still pending
this.setState({expense: newExpense});
});
Действительно ли firebase просто где-то хранит состояние приложения, или просто читает состояние приложения, а затем обновляет состояние (call onSnapshot
) при оформлении запроса? Если это так, то вы не можете обработать сетевую ошибку (или вы можете, но это было бы странно), потому что состояние приложения уже изменилось.
Обновлял ли Firebase состояние приложения, когда эта функция (функция ниже предназначена для добавить коллекцию в базу данных Firebase) называется? и даже не дождался, пока запрос будет успешным?
firebase.firestore().collection("expense").add(value);