如何向数组推入对象并设置状态对象?添加对象返回数值问题排查
问题解答
问题1:将对象类型数据推入数组并设置状态的正确方法
- 在循环外部初始化空数组,避免每次循环重置导致数据丢失
- 遍历目标对象集合,将符合条件的对象推入数组
- 调用状态更新函数,把筛选后的数组设置为新状态
问题2:你的代码错误分析及修正
你的代码存在两个关键错误,导致最终状态不符合预期:
selectedReasons数组在forEach循环内部声明,每次循环都会重新创建空数组,之前推入的对象全部丢失- 最后调用
setSelectedReasons时传入的是原参数values,不是筛选后的selectedReasons
修正后的代码
const mappingFunction = (values: any) => { // 数组声明在循环外部,确保能累积数据 const selectedReasons: any[] = []; values.forEach((reason: any) => { // 若isChecked是布尔类型,建议改为!reason.isChecked,此处保留你原有的字符串判断逻辑 if (reason?.isChecked === "false") { selectedReasons.push(reason); } }); // 将筛选后的数组设置为状态 setSelectedReasons(selectedReasons); };
更简洁的写法(使用filter方法)
const mappingFunction = (values: any) => { const selectedReasons = values.filter((reason: any) => reason?.isChecked === "false"); setSelectedReasons(selectedReasons); };
内容的提问来源于stack exchange,提问作者Rajan Malakar
相关产品推荐
相关产品推荐

