因此,我正在遵循有关创建google登录的教程。他说您需要使用onAuthStateChanged
来监听登录/注销。我无法理解的部分是当他说该方法类似于“开放订阅”,我们需要“关闭订阅”以防止内存泄漏。
所以在您看代码之前,我无法理解的是:
unsubscribeFromAuth
; onAuthStateChanged
分配给this.unsubscribeFromAuth
?unsubscribeFromAuth
class App extends React.Component {
constructor() {
super()
this.state = {
currentUser: null
}
}
unsubscribeFromAuth = null
componentDidMount() {
this.unsubscribeFromAuth = auth.onAuthStateChanged(user => {
this.setState({ currentUser: user })
console.log(user)
})
}
componentWillUnmount() {
this.unsubscribeFromAuth()
}
答案 0 :(得分:0)
您取消订阅以避免内存泄漏。
初始化auth.onAuthStateChanged()
时,您将创建一个侦听器。如果您不取消订阅,那么即使您停止使用它,该监听器也将继续监听。这将浪费内存。
为防止这种情况发生,请在卸载应用程序时取消订阅侦听器。
要取消订阅,您需要取消订阅。这就是为什么您将侦听器分配给ComponentDidMount
中的变量的原因。这使您可以在想要取消订阅时引用变量。
我希望这可以将您的3个问题纳入背景。
这里有两个讲座可以更详细地讨论该主题。