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

React Redux中如何通过字符串值获取对应state数组的长度

解决Redux Slice中动态获取对象属性的问题

嘿,我懂你碰到的这个问题了——你现在写的state.sprites.{payload}是完全不符合JavaScript语法的,这就是报错的根源。要通过动态字符串(也就是你的payload值)访问对象属性,得用方括号语法才行。

正确的Reducer写法

把你的reducer改成这样就能正常获取对应数组的长度了:

checkArray: (state, { payload }) => {
  // 用方括号语法动态访问属性
  const arrayLength = state.sprites[payload].length;
  console.log(arrayLength);
}

额外的容错建议

为了避免用户传入不存在的键名(比如"four")导致代码报错,最好加个简单的判断逻辑:

checkArray: (state, { payload }) => {
  const targetArray = state.sprites[payload];
  if (targetArray) {
    console.log(targetArray.length);
  } else {
    console.warn(`找不到名为 ${payload} 的数组哦!`);
  }
}

为什么方括号语法可行?

JavaScript里访问对象属性有两种方式:

  • 点语法:obj.propertyName,只能用于你提前知道具体名称的固定属性
  • 方括号语法:obj[propertyKey],可以接受变量、字符串甚至表达式来动态获取属性

你的场景里payload是一个动态的字符串值,所以必须用方括号语法才能正确对应到state.sprites下的目标数组~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:45:28