Tôi biết tôi không được phép thay đổi đầu vào và nên sao chép đối tượng để thay đổi nó. Tôi đã tuân theo quy ước được sử dụng trong một dự án redux starter sử dụng:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
để thêm một mục - tôi sử dụng spread để nối mục đó trong mảng.
để xóa tôi đã sử dụng:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
nhưng điều này đang làm thay đổi đối tượng trạng thái đầu vào - điều này có bị cấm mặc dù tôi đang trả về một đối tượng mới không?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
sử dụng Slice ngay bây giờ thay vì splice để không làm thay đổi đầu vào - đây là cách để thực hiện hay có cách nào ngắn gọn hơn?