В настоящее время у меня есть список, который всегда прослушивает базу данных firebase, используя 'on'
Кажется, все работает, за исключением того, что когда новые данные добавляются в базу данных, кажется, что они дублируют данные, если не происходит обновление,
Мой 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.........
Я думаю, что проблема заключается либов рендеринге с ключами может быть?Или с редуктором.
-------_ Редактировать
Итак, изначально воспроизводится OBJ1 OBJ2, теперь на другом устройстве, я добавляю данные в firebase, а теперь и оригинальное устройство.просмотр списка имеет следующее: OBJ1 OBJ2 OBJ1 OBJ2 OBJ3
Таким образом, он сохраняет текущий список и добавляет новый список объектов.Если я обновлю приложение, у него появится список, показывающий, как оно должно быть. OBJ1 OBJ2 OBJ3