programing

AuthStateChanged에서 Firebase 수신 중지

easyjava 2023. 6. 13. 22:55
반응형

AuthStateChanged에서 Firebase 수신 중지

^3.0.0 버전에서는 인증 상태 변경 수신기를 제거하는 데 어려움을 겪고 있습니다.

설명서에 따라 수신기를 시작하려면:

firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});

그러나 문서에서 인증 상태 변경 수신기 제거에 대한 내용을 찾을 수 없습니다.파이어베이스에 고유한 기능이 있습니다.인증 클래스 호출됨removeAuthTokenListener안타깝게도 문서화되지 않았습니다(소방 기반 문서 참조).

브라우저의 웹 콘솔을 사용합니다.

var auth = firebase.auth();
auth.removeAuthTokenListener;

에서는 하나의 매개 변수를 사용하는 함수 정의를 인쇄합니다.저는 다음을 시도했습니다.

this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);

하지만 아무 소용이 없었어요

문서에 따르면,onAuthStateChanged()함수 반환

관찰자에 대한 구독 취소 기능입니다.

따라서 다음과 같은 작업을 수행할 수 있습니다.

var unsubscribe = firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});

그리고 나서:

unsubscribe();

Frank van Puffelen은 이미 이에 대해 매우 잘 답변했지만, 여기 사용자 데이터를 가져오는 React 구성 요소에 대한 사용 사례가 있습니다.이러한 구성 요소는 구성 요소가 마운트 해제되면 구독을 취소해야 합니다. 그렇지 않으면 각 구성 요소에 대한 메모리 누수가 발생합니다.

React.useEffect(() => {
  let unsubscribe;
  const getUser = async () => {
    unsubscribe = await firebase.checkUserAuth(user => setUser(user));
  };
  getUser();
  return unsubscribe;
}, []);

언급URL : https://stackoverflow.com/questions/37370224/firebase-stop-listening-onauthstatechanged

반응형