Я использую firebase auth в интерактивном веб-приложении с помощью реагирующего маршрутизатора.
Пользователь подписывает (в/подписи) с Facebook или Google с помощью всплывающего окна, а затем, если успешно, я направляюсь в основное приложение (/). В основном компоненте приложения я слушаю изменение состояния auth:
componentWillMount() {
this.authListener = this.authListener.bind(this);
this.authListener();
}
authListener прослушивает смену auth:
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');
}
});
}
Все работает отлично, за исключением случаев, когда я выхожу (и возвращаюсь к /signin ) и снова запишусь, используя facebook или google. Затем я получаю сообщение об ошибке:
Предупреждение: setState (...): может обновлять только установленный или монтируемый компонент.
Я подозреваю, что прослушиватель onAuthStateChanged из ранее отключенного ранее зарегистрированного приложения состояния все еще работает.
Есть ли способ удалить прослушиватель onAuthStateChanged, когда компонент приложения отключается?