【发布时间】:2018-04-18 10:16:14
【问题描述】:
我通过将邀请的 ID 传递到后端来删除邀请,这很有效。但是,我的减速器无法正常工作,无法重新渲染新的、过滤的邀请数组。当我刷新页面时,已删除的邀请消失了。我做错了什么?
动作:
export function deleteInvitation(id) {
const user = JSON.parse(localStorage.getItem('user'));
console.log('now deleting id ', id);
return function(dispatch) {
axios
.delete(`${ROOT_URL}/invitation/`, {
headers: { authorization: user.token },
params: { id: id }
})
.then(response => {
console.log(id);
dispatch({
type: DELETE_INVITATION,
id
});
});
};
}
减速器:
export default function(state = {}, action) {
switch (action.type) {
case INVITATION_SUCCESS:
return { ...state, invited: true, error: {} };
case INVITATION_FAILURE:
return { ...state, invited: false, error: { invited: action.payload } };
case FETCH_INVITATIONS:
return { ...state, invitations: action.payload };
case DELETE_INVITATION:
return {
...state,
invitations: state.invitations.filter(_id => _id !== action.id)
};
default:
return state;
}
}
【问题讨论】:
-
state.invitations的结构是什么?过滤器 -state.invitations.filter(_id => _id !== action.id)- 似乎应该是state.invitations.filter(invitation => invitation._id !== action.id) -
是的,完美。我搞砸了 lambda 函数。请将此添加为答案,我会接受。
标签: javascript reactjs react-redux axios