【发布时间】:2017-08-17 22:29:40
【问题描述】:
在这里使用 React-redux 并遇到一些问题,你们中的一些人可能会提供帮助。
用户可以创建“工作”(帖子)并删除它们。添加它们没有问题,reducer 会返回预期的结果。但是,一旦我从(firebase)数据库中删除了一个作业,我就会为当前作业触发一个新的提取,但减速器仍然返回旧作业。我错过了什么吗?
在删除之前,作业对象如下所示:
activeJobs= {
-KrkPPy4ibSraKG-O49S: {
title: 'Help',
location: 'etc,
...
},
-KrkPPy4ibSraKG-O49S: {
title: 'Help',
location: 'etc,
...
} and so on
}
当我将它们全部删除时,我会从服务器返回这个{}。预期的。
没想到的是,我的 reducer 仍然返回旧作业,并且我的组件没有重新渲染。
我在获取作业后调度一个动作:
firebase.database().ref(`/jobs/activeJobs/${currentUser.uid}`)
.on('value', snapshot => {
console.log('new activeJobs ===', snapshot.val());
dispatch({
type: FETCH_JOBS_SUCCESS,
payload: snapshot.val()
});
});
snapshot.val() 确实包含新更新的作业。
那么这里是处理动作的reducer:
switch (action.type) {
case FETCH_JOBS_SUCCESS:
// ...state contains the OLD jobs and action.payload contains {}. Why is is not overriding it the old jobs?
return { ...state, ...action.payload };
default:
return state;
}
为什么我的减速器失败了?
【问题讨论】:
标签: javascript react-native redux react-redux