private loadData(): void {
const q = query(collection(this.store, 'users'), orderBy('userName'));
this.unsubscribe = onSnapshot(q, p => {
let users: any[] = [];
p.forEach(x => {
users.push(x.data());
});
this.usersDataSource = users;
});
}
在上述方法中,正在創建一個偵聽器,可以通過呼叫來洗掉它 -
this.unsubscribe();
在同一個頁面/組件上,如果多次呼叫此方法,Firebase 是否每次都創建新的偵聽器?如果是,那么洗掉所有這些聽眾的最佳方法是什么?
uj5u.com熱心網友回復:
您的問題似乎是必須洗掉您注冊的每個聽眾,這確實是您必須做的。
雖然 SDK 可能會將偵聽器的重復資料洗掉到后端(可能,但我實際上有一段時間沒有檢查過),但與向您公開的 API 無關:訂閱偵聽器的呼叫次數必須與在 SDK 停止偵聽服務器上的更改之前呼叫取消訂閱它。
我通常為我的應用程式的每個范圍保留一個取消訂閱方法串列,當范圍更改時我需要取消訂閱。例如,如果我有一個 React 應用程式,我會為每個組件執行此操作。在其他框架中,路由更改邏輯通常是從舊路由取消訂閱偵聽器的好地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444498.html
標籤:javascript 火力基地 谷歌云火库
