在多个屏幕中调用相同的 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。