私は反応ルータを備えた反応ウェブアプリケーションでfirebase authを実装しています。反応の中の新しいfirebase onAuthStateChangedリスナーを削除するには
ユーザーは、ポップアップサインインを使用してFacebookまたはGoogleのいずれかでサインイン(サインイン)し、成功するとメインアプリ(/)にルーティングします。
componentWillMount() {
this.authListener = this.authListener.bind(this);
this.authListener();
}
authListenerは、認証の変更をリッスン:メインのアプリコンポーネントでは、私は、認証状態変化をリッスン
authListener() {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log('user changed..', user);
this.setState({
User: {
displayName: user.displayName
}
});
} else {
// No user is signed in.
browserHistory.push('/signin');
}
});
}
すべては私がサインアウトする場合を除き、正常に動作します(バック/サインインに行きます)、FacebookやGoogleを使ってもう一度サインインしてください。次に、エラーメッセージが表示されます。
警告:setState(...):マウントされているか取り付け中の コンポーネントのみを更新できます。
は私が状態のアプリでログインして今アンマウント以前からonAuthStateChangedリスナーがまだ実行されていると思われます。
AppコンポーネントがアンマウントするときにonAuthStateChangedリスナーを削除する方法はありますか?
にfirebase.authを削除する方法任意のアイデアを().onAuthStateChanged?古いfirebaseには.off()関数がありました – user2248331
はい、古いfirebaseの一部です。新しいドキュメントは次のとおりです:https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onAuthStateChangedしかし、私はopt_completedを使用する方法を理解できません... – user2248331
opt_completedコールバック関数リスナーが削除されたときに呼び出されます。これは、ファイアベースからリスナを取り外す際のクリーンアップロジックを意味します。 –