You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Redux切片中payload/action用法解析求助

Redux Reducer中Payload与Action的用法解析

我正在学习一段示例代码,其中两个独立的Redux切片包含如下Reducer:

切片1的Reducer

incrementQuantity: (state, action) => {
  const { payload: index } = action;

  if (state[index]) {
    if (state[index].name === " Auditorium Hall (Capacity:200)" && state[index].quantity >= 3) {
      return;
    }
    state[index].quantity++;
  }
}

切片2的Reducer

toggleMealSelection: (state, action) => {
  state[action.payload].selected = !state[action.payload].selected;
},

我无法理解上述两种场景中payload/action的用法,请求解释以下两行代码的作用:

  • const { payload: index } = action;
  • state[action.payload].selected = !state[action.payload].selected;

第一行代码解析

const { payload: index } = action; 是ES6对象解构赋值的写法,核心是从Redux的action对象里提取payload属性,同时给它重命名为index方便后续使用。

Redux的action对象一般包含type(标识要执行的操作类型)和payload(传递操作所需的数据),这里的payload就是触发incrementQuantity操作时传入的目标元素下标。这行代码和const index = action.payload;功能完全一致,只是用解构+重命名的方式让代码更简洁直观。

第二行代码解析

state[action.payload].selected = !state[action.payload].selected; 是直接通过action.payload拿到目标元素在state中的位置(下标或键名),找到该元素的selected布尔属性后,将其值取反——即之前是true就改为false,之前是false就改为true,以此实现“选中/取消选中”的切换效果。


内容的提问来源于stack exchange,提问作者Thomas Cherian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:22:05