需要一点帮助。我正在尝试将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{
...
}