反应本机Redux对象映射在Firebase的动态数据上创建重复项

时间:2019-06-21 19:32:51

标签: firebase react-native redux-thunk

我目前有一个列表,该列表始终使用“ on”监听Firebase数据库

除了将新数据添加到数据库中外,所有内容似乎都可以正常工作,除非刷新,否则似乎可以复制数据。

我的action.js:

export const getAllEvents = () => {
    var a =[]
      return (dispatch) => {
        dispatch(fetchingStart());

            var ref = firebase.database().ref('Events/');
            ref.orderByChild("epochTime").on("value", function(snapshot) {

                snapshot.forEach(child => {
                    a.push(child.val())
                })
                console.log("Array dispatch ", a)
                dispatch(fetchingSuccess(a))


              });


      }
  }

我的减速器:

const INITIAL_STATE = {
    arr: [],
    isFetching: false,

}

const eventListReducer = (state = INITIAL_STATE, action) => {
    switch (action.type) {
        case FETCH_BEGIN:
            console.log("begining fetch")
          return { ...state, isFetching: true };
        case FETCH_SUCCESS:
          return { ...state, isFetching: false, arr: action.payload };
        default:
          return state;
      }
}

export default eventListReducer;

我的渲染:

var obj = this.props.eventListReducer;

     {obj.map((request,i) => (
                                <TouchableOpacity activeOpacity={0.8} key={i} onPress={() => this.props.navigation.navigate('Event', {
                                    spots: request.availableSpots,
                                    date: request.date,
                                    puckdrop: request.time,
                                    level: request.level,
                                    organizer: request.scheduler,
                                    uuid: request.uuid,

                                })

                            }>
<Text.........

我认为问题可能出在按键渲染上?或使用减速器。

-------_ Edit

所以最初呈现的是 OBJ1 OBJ2 现在在另一台设备上,我将数据添加到firebase,现在查看列表的原始设备具有以下功能: OBJ1 OBJ2 OBJ1 OBJ2 OBJ3

因此它将保留当前列表并追加新的对象列表。如果我刷新应用程序,它将显示列表,显示应如何显示 OBJ1 OBJ2 OBJ3

0 个答案:

没有答案