使用Firebase Auth和React Native增加内存使用量

时间:2018-09-21 20:12:23

标签: javascript reactjs firebase react-native firebase-authentication

我正在尝试将Firebase身份验证功能添加到我的React Native应用程序中。由于FirebaseAuth是异步加载的,因此必须使用onAuthStateChanged来侦听更改,如下所示:

  async componentDidMount() {
      if (!firebase.apps.length) { firebase.initializeApp(ApiKeys.FirebaseConfig); }


      firebase.auth().onAuthStateChanged((user) => {
          this.setState({
              isAuthenticationReady: true, isAuthenticated: !!user
          });
      });
}

我的实现是否存在问题,导致内存使用增加,或者firebase-js-sdk存在问题?另外,代码是否有提供相同功能的替代方法?

(我正在使用Expo和Firebase JS SDK的5.5.0版本)

1 个答案:

答案 0 :(得分:1)

我发现的唯一一件事是,在卸载组件后,您可能应该停止监听。您正在调用的方法返回一个函数,您可以调用该函数来取消订阅事件。像这样:

componentDidMount() {
    this.onAuthStateChangedUnsubscribe = 
        firebase.auth().onAuthStateChanged((user) => {
            this.setState({
                isAuthenticationReady: true, isAuthenticated: !!user
            });
        });
}

componentWillUnmount() {
    if (this.onAuthStateChangedUnsubscribe) this.onAuthStateChangedUnsubscribe();
}