【发布时间】:2020-07-02 16:40:40
【问题描述】:
我正在使用 redux 和 Firebase 实时数据库构建一个原生反应,我担心在哪里订阅以在屏幕上获取我的项目。 我使用 useEffect 将订阅发送到 firebase db:
useEffect(() => {
dispatch(userActions.fetchPets());
}, []);
在行动内部
export const fetchPets = () => {
return async dispatch => {
const user = await firebase.auth().currentUser;
firebase
.database()
.ref(`pets/${user.uid}`)
.on("child_added", snapshot => {
const pet = snapshot.val() || null;
dispatch({ type: ADD_PET, payload: pet });
});
};
};
我的问题是当我的屏幕重新渲染时,此操作再次执行,并填充重复的数据。 这是我的减速机:
case ADD_PET:
return {
...state,
pets: [...state.pets, action.payload]
};
我的问题 我应该用键过滤我的状态以删除重复吗? 我应该把我的订阅放在另一个地方吗?像中间件什么的?有这样的模式吗?
PS:“对不起我的英语”
【问题讨论】:
标签: react-native firebase-realtime-database react-redux