tôi đã xây dựng một ứng dụng giỏ hàng với giảm này trong reactjs/Redux:Làm cách nào để chuyển đổi thuộc tính trong bộ giảm tốc?
const initialState = {
items: [],
cartOpen: false,
total: 0
}
const Cart = (state = initialState, action) => {
switch (action.type) {
case 'ADD_TO_CART':
let newstate = [...state, action.payload];
var newTotal = 0;
newstate.forEach(it => {
newTotal += it.item.price;
});
newstate.total = newTotal;
newstate.cartOpen =true
return newstate;
case 'TOGGLE_CART':
debugger;
return !state.cartOpen;
default:
return state
}
}
export default Cart;
Tôi cố gắng để thiết lập trạng thái cho các giỏ tức là mở nhưng khi tôi kiểm tra các bản ghi vào giỏ bất động sản được cập nhật và không phải là cartOpen bất động sản?
Tôi không thực sự thay đổi trạng thái tôi vừa trả về giá trị Boolean? –
Tôi vô tình nhấn phím enter, ok đây là phần còn lại của bình luận trước đây của tôi: 'initialState = {a: 1, b: 2, cartOpen: false}' bây giờ nếu bộ giảm tốc của bạn trả về 'return! State.cartOpen' .log (state) sẽ sinh ra một boolean 'true' (nhưng bạn muốn' {a: 1, b: 2, cartOpen: true} '). Có nghĩa là bạn đã mất tất cả các thuộc tính khác 'a',' b' etc trong đối tượng trạng thái của bạn. Về cơ bản bạn đã đột biến hoặc làm hỏng trạng thái của bạn. –