小编use*_*331的帖子

如何在react中删除新的firebase onAuthStateChanged侦听器

我正在反应网络应用程序中使用react-router实现firebase auth.

用户使用弹出窗口登录(在/登录)Facebook或Google,然后如果成功,我将路由到主应用程序(/).在主应用程序组件中,我监听身份验证状态更改:

  componentWillMount() {
    this.authListener = this.authListener.bind(this);
    this.authListener();
  }
Run Code Online (Sandbox Code Playgroud)

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');
      }
    });
  }
Run Code Online (Sandbox Code Playgroud)

一切正常,除非我退出(并返回/登录)并使用Facebook或谷歌再次登录.然后我收到一个错误说:

警告:setState(...):只能更新已安装或安装的组件.

我怀疑现在卸载的先前登录状态应用程序中的onAuthStateChanged侦听器仍在运行.

有没有办法在App组件卸载时删除onAuthStateChanged侦听器?

firebase reactjs react-router firebase-authentication

10
推荐指数
2
解决办法
5320
查看次数

为Firebase Google Auth指定重定向URL

我将React Web应用程序与Firebase一起使用。

我有一个登录屏幕,供用户使用firebase的signInWithRedirect与Google登录。

一切正常,除了auth返回登录屏幕,该屏幕再次显示几秒钟,之后我的React Router收到他们已通过身份验证并将其发送到应用程序主页。

刷新应用程序首页既好又快速。

登录已打开/应用主目录已打开/ app

有没有一种方法可以指定Firebase的signInWithRedirect的Google auth重定向回到应用程序主目录,而不是原始登录页面?

google-authentication react-router firebase-authentication

6
推荐指数
1
解决办法
1603
查看次数