Using Firebase Realtime Database Is there any way to clean up listener .on() that is in listener .on() nested ?
useEffect(() => {
const ChannelRef = database().ref(`/user/${uid}/channel`);
ChannelRef.keepSynced(true);
ChannelRef.on('child_added', channel_id => {
var startTime = ....
const threadRef = database().ref(`/channel/${channel_id.key}/Thread`).orderByKey().startAt(startTime);
threadRef.keepSynced(true);
threadRef.on('value', thread => {. <-------------------------------- How to cleanup this listenner ?
dispatch({
type: 'AddThread',
payload: thread.val()
});
})
return () => {
// CleanUp listenner
ChannelRef.off();
ChannelRef.keepSynced(false);
**// How to cleanup database().ref(`/channel/${channel_id.key}/Thread`).orderByKey().startAt(startTime) ?**
}
}, []
There's nothing special about managing such listeners. You'll need to keep a list of the listeners you attached, and then call off on them when the effect expires.