首页 > 解决方案 > 未在数据库.on 方法中调用回调

问题描述

我正在使用 react-native-firebase 包、react-native 和 redux。当我试图通过从 firebase 数据库中获取任务来初始化数据时。我正在从我的反应组件的 componentDidMount() 方法中调用异步 redux 操作。

  componentDidMount() {
    let uid = null;
    if (this.props.sessionState.authUser) {
      uid = this.props.sessionState.authUser.uid;
    }
    this.props.fetchToDos(uid);
  }

在第一次构建 React Native 应用程序时一切正常,但是当我保存并重新加载时,由于某种原因,我的 db 调用的回调没有被调用,并且在我完全重建我的应用程序之前它一直没有被调用。再次,它在应用程序的第一次加载时运行良好。

这是对数据库的调用:

export const fetchToDos = (uid) => async dispatch => {
  var userId = firebase.auth().currentUser.uid;
  database.ref().child('users/' + userId + '/tasks/').on('value', snapshot => {
    console.log('INSIDE');
    dispatch({
      type: 'FETCH_TASKS',
      payload: snapshot.val()
    });
  })
};

我正在从网络上移植我的应用程序,这段代码与我的网络应用程序完美配合。

标签: javascriptfirebasereact-nativefirebase-realtime-databasereact-native-firebase

解决方案


这个 Github issue似乎是你的问题,我认为你应该看看。祝你好运!


推荐阅读