在多个屏幕中调用相同的 onAuthStateChanged 侦听器会创建新的侦听器吗?
Calling same onAuthStateChanged listener in multiple screens creates new listeners?
我正在 React-Navigation 的多个屏幕中调用 onAuthStateChanged
,我想知道它是否创建了新的侦听器还是重置了旧的侦听器?
我知道我可以像下面那样取消订阅,但我是否必须只为 ex 调用此侦听器。在主屏幕中还是我必须为每个屏幕都这样做?请记住,在反应导航中,class 状态在导航时不会重置,因此即使在导航时侦听器也应保持活动状态。
const unsubscribe = firebase.auth().onAuthStateChanged(user_auth => {
if (user_auth) {
this.setState({ current_user_id: user_auth.uid });
if (!this.state.set_as_favorite) this.getUsersFavorites();
unsubscribe();
} else {
//log out
}
});
每个监听器都是唯一的,需要调用注册监听器时返回的函数取消订阅
另一方面,这些身份验证状态侦听器只是客户端对象。所以注册多个auth-state listeners并不意味着你在多次连接到服务器。
实际上,连接服务器是基于使用Firebase Authentication period,完全不依赖于是否(或多少)auth state listeners。
我正在 React-Navigation 的多个屏幕中调用 onAuthStateChanged
,我想知道它是否创建了新的侦听器还是重置了旧的侦听器?
我知道我可以像下面那样取消订阅,但我是否必须只为 ex 调用此侦听器。在主屏幕中还是我必须为每个屏幕都这样做?请记住,在反应导航中,class 状态在导航时不会重置,因此即使在导航时侦听器也应保持活动状态。
const unsubscribe = firebase.auth().onAuthStateChanged(user_auth => {
if (user_auth) {
this.setState({ current_user_id: user_auth.uid });
if (!this.state.set_as_favorite) this.getUsersFavorites();
unsubscribe();
} else {
//log out
}
});
每个监听器都是唯一的,需要调用注册监听器时返回的函数取消订阅
另一方面,这些身份验证状态侦听器只是客户端对象。所以注册多个auth-state listeners并不意味着你在多次连接到服务器。
实际上,连接服务器是基于使用Firebase Authentication period,完全不依赖于是否(或多少)auth state listeners。