我建立了一個購物車的應用程序與此減速機在reactjs /終極版:如何在減速器中切換屬性?
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;
我想設置了車的狀態,即開,但是當我檢查日誌的車屬性更新,而不是cartOpen屬性?
我真的不改變狀態我只是返回一個布爾值? –
我不小心按了輸入鍵,好的,這裏是我以前評論的其餘部分: 'initialState = {a:1,b:2,cartOpen:false}' 現在如果你的reducer返回'return!state.cartOpen',那麼console .log(state)會產生一個布爾值「true」(但你想要'{a:1,b:2,cartOpen:true}')。這意味着你的狀態對象中已經失去了所有其他屬性'a','b'等。基本上你已經改變或破壞了你的狀態。 –