Tôi có danh sách cần làm và muốn đặt trạng thái của mục đó trong mảng thành "hoàn thành" nếu người dùng nhấp vào "hoàn tất".Cập nhật giá trị đơn lẻ trong mảng mục | phản ứng redux
Đây là hành động của tôi:
export function completeTodo(id) {
return {
type: "COMPLETE_TASK",
completed: true,
id
}
}
Đây là giảm tốc của tôi:
case "COMPLETE_TASK": {
return {...state,
todos: [{
completed: action.completed
}]
}
}
Vấn đề tôi đang gặp là trạng thái mới nào không còn có các văn bản liên quan đến các mục đó todo trên mục đã chọn và ID không còn ở đó nữa. Đây có phải là vì tôi đang ghi đè tiểu bang và bỏ qua các thuộc tính trước đó không? Mục đối tượng tải của tôi trông giống như sau:
Objecttodos: Array[1]
0: Object
completed: false
id: 0
text: "Initial todo"
__proto__: Object
length: 1
__proto__: Array[0]
__proto__: Object
Như bạn có thể thấy, tất cả những gì tôi muốn làm là đặt giá trị hoàn thành thành true.
Cảm ơn sự giúp đỡ của bạn TomW và cảm ơn bạn đã tham khảo thư viện về cập nhật trạng thái sâu. Giúp đỡ nhiều! – Filth
Tôi thấy bạn đang sử dụng một dòng nếu tuyên bố mặc dù tôi thấy nó khó đọc. Tôi biết giảm bom khi có báo cáo. Bạn có thể giải thích những gì đang xảy ra ở đây và có thể một cách khác để viết logic này? – Filth
Giảm thiểu bom 'khi bạn không trả lại trạng thái từ mọi nhánh - 'if' phát biểu là tốt, bạn chỉ cần đảm bảo rằng bạn' trở về trạng thái '; sau 'if'. Nếu bạn nhìn vào trình xử lý TOGGLE_TODO ngay dưới đây: http://redux.js.org/docs/basics/Reducers.html#handling-more-actions bạn sẽ thấy một ví dụ rất giống với ví dụ của tôi sử dụng 'if' câu lệnh thay vì một '?:' - '?:' có một lợi ích nhỏ so với câu lệnh if ở chỗ nó buộc bạn trả về một giá trị từ mỗi nhánh. – TomW