我有一個待辦事項列表,並希望將該項目的狀態設置爲「完成」,如果用戶點擊「完成」。更新項目數組| |中的單個值反應減少
這裏是我的行動:
export function completeTodo(id) {
return {
type: "COMPLETE_TASK",
completed: true,
id
}
}
這裏是我的減速器:
case "COMPLETE_TASK": {
return {...state,
todos: [{
completed: action.completed
}]
}
}
我有是新的狀態也不再有文本的待辦事項上相關的問題選定的項目和ID不再存在。這是因爲我覆蓋了狀態並忽略了以前的屬性?我的物品onload看起來像這樣:
Objecttodos: Array[1]
0: Object
completed: false
id: 0
text: "Initial todo"
__proto__: Object
length: 1
__proto__: Array[0]
__proto__: Object
正如你所看到的,我想要做的就是將完成的值設置爲true。
感謝您的幫助TomW並感謝您的引用關於深州更新庫。很好的幫助! – Filth
我看到你正在使用單行if語句,雖然我發現它很難閱讀。如果有陳述,我知道減速器炸彈。你能解釋這裏發生了什麼,也可能是另一種寫這種邏輯的方式嗎? – Filth
當你不從每個分支返回狀態時,減速器的'炸彈' - '如果'語句沒問題,只是你需要確保你'返回狀態';'在'if'之後。如果你看看這裏的TOGGLE_TODO處理程序:http://redux.js.org/docs/basics/Reducers.html#handling-more-actions你會看到一個非常類似於我的例子,它使用了'if'語句而不是'?:' - '?:'與if語句相比稍有好處,因爲它強制您從每個分支返回一個值。 – TomW