我建立了一个购物车的应用程序与此减速机在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'等。基本上你已经改变或破坏了你的状态。 –