Reactjs 如何在状态下发送新数量?
我有这个密码Reactjs 如何在状态下发送新数量?,reactjs,redux,Reactjs,Redux,我有这个密码 const initialState = { asideItems: [], total: 0 } const asideReducer = (state = initialState, action) =>{ switch(action.type) { case ADD_TO_ASIDE: const item = action.payload const existItem = state.asideItems.find(i
const initialState = {
asideItems: [],
total: 0
}
const asideReducer = (state = initialState, action) =>{
switch(action.type) {
case ADD_TO_ASIDE:
const item = action.payload
const existItem = state.asideItems.find(item => action.payload.id === item.id)
if(existItem)
{
console.log(item)
item.quantity += 1
console.log(item)
return{
...state,
total: state.total + item.price,
}
}
else{
return{
...state,
asideItems: [...state.asideItems , item],
total: state.total + item.price
}
}
default:
return state
}
}
我做了简单的验证,如果在asideItems
中存在这样的项目,请更改其计数。例如item.quantity+=1
working true
console.log(item) // Quantity = 1
item.quantity += 1
console.log(item) // Quantity = 2
但新的数量不会以国家的形式发送。是什么导致了这种情况?我在这里发现了几个问题。 首先,switch语句在语法上无效。添加到需要引用的旁边。 其次,您没有使用函数方法来更新项目数量,而是对变量进行了适当的修改,这种方式在redux中不起作用。退房
const asideReducer=(state=initialState,action)=>{
开关(动作类型){
案例“将_添加到_旁边”:
const updatedAsideItems=state.asideItems.map(currentItem=>{
if(currentItem.id==action.payload.id){
返回{…currentItem,quantity:(currentItem.quantity | | 0)+1}
}否则{
返回当前项目
}
})
返回{…state,asideItems:updatedAsideItems,总计:state.total+action.payload.price}
违约:
返回状态
}
}
您没有用数量更新状态您没有返回
数量
-我看不出您预期会发生什么。@BiswaBhusan但是如何用数量更新此项目的状态?您能告诉我巡演有效负载在运行中是什么样子的吗