React/JS中如何用扩展运算符向数组添加元素?
问题解决:下拉项添加到数组的正确状态更新写法
你的错误写法存在两个核心问题:
- 误将数组用对象的大括号
{}展开,数组扩展应该使用方括号[] - 在函数式更新中直接引用
finalBenefits原状态,而非使用传入的prev参数(状态更新是异步的,直接取原状态可能拿到旧值)
正确写法
如果selectedBenefits1是单个选项值(比如字符串"Additional leave"),需要包装成对象再添加:
setFinalBenefits(prev => [...prev, { option: selectedBenefits1 }])
如果selectedBenefits1本身就是{ option: "xxx" }格式的对象,直接追加即可:
setFinalBenefits(prev => [...prev, selectedBenefits1])
说明
prev是React传入的状态更新前的最新值,确保每次更新都基于当前最新的数组状态[...prev]会展开原有数组的所有元素,再把新元素追加到末尾,最终得到你需要的[{option: "xxx"}, ...]结构
内容的提问来源于stack exchange,提问作者n_d22
相关产品推荐
相关产品推荐

