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?

questionAnswers(2)

yourAnswerToTheQuestion