Cómo eliminar la nueva base de fuego en oyenteAuthStateChanged en reaccionar
Estoy implementando Firebase Auth en una aplicación web react con react-router.
Un usuario inicia sesión (en / iniciar sesión) con Facebook o Google utilizando el inicio de sesión emergente, luego, si tiene éxito, me dirijo a la aplicación principal (/). En el componente principal de la aplicación escucho un cambio de estado de autenticación:
componentWillMount() {
this.authListener = this.authListener.bind(this);
this.authListener();
}
authListener escucha el cambio de autenticación:
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');
}
});
}
Todo funciona bien, excepto cuando cierro la sesión (y vuelvo a / iniciar sesión) y vuelvo a iniciar sesión con Facebook o Google. Entonces recibo un error que dice:
Advertencia: setState (...): solo puede actualizar un componente montado o montado.
Sospecho que el oyente onAuthStateChanged de la aplicación de estado de inicio de sesión anterior ahora desmontada todavía se está ejecutando.
¿Hay alguna forma de eliminar el oyente onAuthStateChanged cuando se desmonta el componente de la aplicación?