Javascript 状态对象结构已更改

Javascript 状态对象结构已更改,javascript,object,reactjs,redux,Javascript,Object,Reactjs,Redux,我已经编写了一个带有数据库交互的小型待办事项列表应用程序。一切正常,只是当我试图从状态中删除toDo列表项时,对象状态结构发生了更改。 因此,我不再能够在运行时呈现我的待办事项列表 我假设只需要对我的reducer代码做一点小小的更改,但我对ES6和Redux有一点经验,可以自己实现它 这是我的代码: export default (state = {items: []}, action) => { switch (action.type){ case 'RECEIVE_POSTS

我已经编写了一个带有数据库交互的小型待办事项列表应用程序。一切正常,只是当我试图从状态中删除toDo列表项时,对象状态结构发生了更改。 因此,我不再能够在运行时呈现我的待办事项列表

我假设只需要对我的reducer代码做一点小小的更改,但我对ES6和Redux有一点经验,可以自己实现它

这是我的代码:

export default (state = {items: []}, action) => {
switch (action.type){
    case 'RECEIVE_POSTS':
        return Object.assign({}, state, {
            items: action.items
        });
    case 'ADD_ITEM':
        return Object.assign({}, state, {
            items: [
                ...state.items,
                action.items
            ]
        });
    case 'REMOVE_ITEM':
        return Object.assign({}, state, {
            items: [
                state.items.filter((items, id) => id !== action.id)
            ]
        });
    default:
        return state
    }
   }
以及我的删除项-操作

export default function deleteItem(id){
console.log("test")
return (dispatch, getState) => {
    return dispatch (removeItem(dispatch, id))
    return dispatch (receiveDelete(id))
   }
 }

 function removeItem(dispatch, id){
   return dispatch => {
    $.ajax({
        method: "POST",
        url: "http://localhost:444/localWebServices/removeTask.php",
        data: {id: id}
    }).success(function(msg){
        console.log(msg)
        dispatch(receiveDelete(id))
    });
    }
   }

  function receiveDelete(id){
   console.log("receive add")
   return {
    type: 'REMOVE_ITEM',
    id: id
    }
   }
这里有两张物体结构的图片,在我删除一个项目之前和之后

我想说清楚。一切都正常(列表被呈现),但在我删除一个项目后,状态结构被更改->列表未呈现。我没有收到任何错误消息

删除前:

删除后:

任何帮助都会很好

更新:

我已经更改了代码,不再返回数组。根据开发人员控制台,该状态现在似乎是正确的,但它没有呈现。这个代码的方向正确吗

return Object.assign({}, state, {
            items: state.items.filter((items, id) => id !== action.id)
        });

传递给筛选器回调的参数是
arrayElement、index、array
,因此请尝试将回调更改为
.filter(item=>item.id!==action.id)

那么在删除时,您将添加所有当前项以及一个与id不匹配的项数组?那么,如果不编写代码,您应该如何学习这些内容呢,这是行不通的(而且你走得越远,你的道路效率就越低)。那么你期望得到什么样的答案呢?您希望有人为您编写可以复制粘贴的代码吗?我在第一条评论中给出了一个提示。另一个提示:执行删除后,状态项的类型是什么?