我目前有一个列表,该列表始终使用“ 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