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

React中如何用变量作为对象键调用setState更新过滤器状态?

解决React中使用变量作为对象键更新状态的问题

问题核心是你直接将val写在对象字面量里当键名时,JavaScript会把它识别成字符串"val"而非变量对应的实际值。要解决这个问题,只需使用ES6对象属性的方括号表示法,把变量包裹在方括号中,这样它就会被解析为变量的实际值。

修改你的onChange回调代码即可:

onChange={(event) =>
  props.setFilters({ 
    ...props.filters, 
    [val]: event.target.value // 用方括号包裹val,解析为变量对应的值
  })
}

额外优化建议

不要用index作为select组件的key,如果types的键顺序发生变化,可能导致React渲染异常。直接用val作为key更稳定,因为每个val都是唯一的:

<select
  name={val}
  key={val} // 替换index为val作为key
  onChange={(event) =>
    props.setFilters({ ...props.filters, [val]: event.target.value })
  }
>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:06:20