Javascript 状态对象结构已更改
我已经编写了一个带有数据库交互的小型待办事项列表应用程序。一切正常,只是当我试图从状态中删除toDo列表项时,对象状态结构发生了更改。 因此,我不再能够在运行时呈现我的待办事项列表 我假设只需要对我的reducer代码做一点小小的更改,但我对ES6和Redux有一点经验,可以自己实现它 这是我的代码:Javascript 状态对象结构已更改,javascript,object,reactjs,redux,Javascript,Object,Reactjs,Redux,我已经编写了一个带有数据库交互的小型待办事项列表应用程序。一切正常,只是当我试图从状态中删除toDo列表项时,对象状态结构发生了更改。 因此,我不再能够在运行时呈现我的待办事项列表 我假设只需要对我的reducer代码做一点小小的更改,但我对ES6和Redux有一点经验,可以自己实现它 这是我的代码: export default (state = {items: []}, action) => { switch (action.type){ case 'RECEIVE_POSTS
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不匹配的项数组?那么,如果不编写代码,您应该如何学习这些内容呢,这是行不通的(而且你走得越远,你的道路效率就越低)。那么你期望得到什么样的答案呢?您希望有人为您编写可以复制粘贴的代码吗?我在第一条评论中给出了一个提示。另一个提示:执行删除后,状态项的类型是什么?