Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在状态下发送新数量?_Reactjs_Redux - Fatal编程技术网

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但是如何用数量更新此项目的状态?您能告诉我巡演有效负载在运行中是什么样子的吗