我正在跟随一个关于创建Google登录的教程。他说你需要使用onAuthStateChanged
来监听登录/退出。我没有理解的部分是他说这个方法就像“开放订阅”,我们需要“关闭订阅”以防止内存泄漏。
在查看代码之前,我无法理解的是:
- 为什么我们需要定义
unsubscribeFromAuth
; - 为什么我们需要在ComponentDidMount中将
onAuthStateChanged
赋值给this.unsubscribeFromAuth
; - 为什么我们需要使用ComponentWillUnmount并调用
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()
}