React native 比较更新redux状态前后的值

React native 比较更新redux状态前后的值,react-native,redux,react-redux,react-native-firebase,React Native,Redux,React Redux,React Native Firebase,我正在侦听Firebase节点……然后,当FBS中发生更改时,我会将快照与当前Redux中的内容进行比较。疯狂的是,即使在我调度之前,Redux状态已经从快照反映了FBS中的更新值 const listenToFbsMyUserNode = (dispatch) => { database() .ref('profiles/users/') .on('value', snapshot => { let state = store.getState();

我正在侦听Firebase节点……然后,当FBS中发生更改时,我会将快照与当前Redux中的内容进行比较。疯狂的是,即使在我调度之前,Redux状态已经从快照反映了FBS中的更新值

const listenToFbsMyUserNode = (dispatch) => {
  database()
    .ref('profiles/users/')
    .on('value', snapshot => {
      let state = store.getState(); //at this point Redux somehow already knows about the updated value before Ive dispatched!!!
      //now can dispatch
      dispatch(_refreshMyProfile(snapshot.val()));
    });
};  

这意味着您可能正在将Firebase对象复制到存储中。
由于Firebase不能一成不变地工作,Firebase会修改这些对象——本质上也是通过分派修改您的存储,因为您的存储现在包含对这些对象的引用。当然,这样的事情不应该发生-在分派对象之前将对象转换为平面数据,而不是直接分派Firebase对象。

感谢您的回答……完全正确,我将从FBS返回的快照直接传递到存储区……非常有趣的是,它是这样工作的。当你说将对象转换为平面数据时……你是说JSON.stringify?似乎有一个snapshot.data方法: