![](/img/trans.png)
[英]How to unsubscribe(remove a listener) from React Native Expo push notifications
[英]How do I unsubscribe from a Firestore listener in React-Native?
如何取消訂閱 React-Native 中的 Firestore 偵聽器? 我有一個 function ,我正在獲取並收聽 Firestore 中的更改:
_fetchPatientsList() {
var query = firestore().collection('Collection').doc().collection('public');
query = query.where('act', '==', 1);
query = query.where('city', '==', this.state.selected_city);
query = query.orderBy('update_time', 'desc');
query = query.limit(10);
query.onSnapshot({
error: (e) => this.setState({ errorMessage: e, refreshingPatients: false }),
next: (querySnapshot) => {
///do something
},
});
}
我想在注銷時取消訂閱:
_logOutHandler = () => {
auth()
.signOut()
.then(() => {
console.log('User signed out!')
});
let unsub = firestore().collection('Collection').doc().collection('public').onSnapshot(() => {
});
// Stop listening for changes
unsub();
}
這是正確的做法嗎?
你必須保存一個監聽器引用const unsubRef = query.onSnapshot
使用參考,例如:
const unsubRef = query.onSnapshot({
error: (e) => this.setState({ errorMessage: e, refreshingPatients: false }),
next: (querySnapshot) => {
///do something
},
});
//just make it to unsubscribe
unsubRef();
要停止其他 function 上的偵聽器,您可以這樣做:
import from ....
//variables
let unsubRef;
// function to stop listener
stopListener = (unsubRef) => {
unsubRef();
};
//save the reference for this query
unsubRef = query.onSnapshot({
error: (e) => this.setState({ errorMessage: e, refreshingPatients: false }),
next: (querySnapshot) => {
///do something
},
});
//other function you want cancel listener
otherFunc = async() => {
// some code
//stop the listener
await this.stopListener(unsubRef);
//signout code
};
您可以在此處查看更多詳細信息: https://rnfirebase.io/firestore/usage#realtime-changes或https://firebase.google.com/docs/firestore/query-data/listen#detach_a_listener
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.