如何在不泄漏内存泄漏的情况下添加auth侦听器firebase



需要一点帮助。我正在尝试将Auth侦听器添加到我的React应用程序中,但是我得到了内存泄漏,我需要该侦听器一直处于活动状态,因此它将渲染登录的用户内容,login&注册与用户在同一路线上,在Auth State Change上,我只是渲染不同的组件。

  state = {
    login: false
  };
  componentWillMount() {
    this.authListener();
  }
  authListener = () => {
    auth.onAuthStateChanged(user => {
      if (user) {
        this.setState({
          login: true
        });
      } else this.setState({ login: false });
    });
  };
  redirectOnLogIn = () => {
    let { login } = this.state;
    if (!login) {
      return <Auth />;
    } else {
      return <Users />;
    }
   };

componentWillMount()-此功能可能最终被调用,然后在调用初始渲染之前被调用,因此可能导致多个副作用。由于这个事实,不建议将此功能用于任何副作用引起操作。尝试使用componentDidMount()并进行报告。P.S.另外,如果我是您,我会在您的app.js文件中移动auth.onauthstatatechanged-类似

firebase.auth().onAuthStateChanged(user => {
  if (user) {
    ReactDOM.render(<Users />, document.getElementById("app"));
    }
  } else {
  ReactDOM.render(<Auth />, document.getElementById("app"));
  }
});

也可以在初始运行之前添加类似的东西。

var user = firebase.auth().currentUser; if(user){ ... }else{ ... }

相关内容

最新更新