Como remover o novo ouvinte onAuthStateChanged do firebase em
Estou implementando a autenticação firebase em um aplicativo da web react com o react-router.
Um usuário entra (em / entra) com o Facebook ou o Google usando o login pop-up e, se for bem-sucedido, direciono para o aplicativo principal (/). No componente principal do aplicativo, ouço uma alteração no estado de autenticação:
componentWillMount() {
this.authListener = this.authListener.bind(this);
this.authListener();
}
authListener ouve a alteração de autenticação:
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');
}
});
}
Tudo funciona bem, exceto quando eu sair (e voltar para / entrar) e entrar novamente usando o facebook ou o google. Então eu recebo um erro dizendo:
Aviso: setState (...): só pode atualizar um componente montado ou montado.
Suspeito que o ouvinte onAuthStateChanged do aplicativo de estado com logon anterior desmontado agora ainda esteja em execução.
Existe uma maneira de remover o ouvinte onAuthStateChanged quando o componente App desmontar?