Firestore取消订阅useEffect

时间:2020-07-16 12:03:33

标签: reactjs firebase react-native google-cloud-firestore

我正在尝试使用useEffect停止收听Firebase Firestore集合更改。

我可以获取Firebase数据,但无法访问此unsubscribe();

我该如何解决?

if (typeof(Event) === 'function') {
  // modern browsers
  window.dispatchEvent(new Event('resize'));
} else {
  // for IE and other old browsers
  // causes deprecation warning on modern browsers
  var evt = window.document.createEvent('UIEvents'); 
  evt.initUIEvent('resize', true, false, window, 0); 
  window.dispatchEvent(evt);
}

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式从useEffect钩子内部取消订阅:

useEffect(() => {
    const unsubscribe = db.collection('room')
        .where('joinUser', 'array-contains-any', [10])
        .onSnapshot((res) => {
            // do something...
        });
    return () => unsubscribe()
}, []);

答案 1 :(得分:0)

尝试退订退回

 let unsbscribe;

  async function getFirebaseData() {
      unsbscribe = db.collection('room')
          .where('joinUser', 'array-contains-any', [10])
          .onSnapshot((res) => {
            // do something...
          });


  useEffect(() => {
    getFirebaseData();
    return unsubscribe
  }, []);