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

ReactJS+Typescript实现Checkbox勾选时给字符串数组增减元素

问题原因
  • 现有处理函数没有获取Checkbox的勾选状态做分支判断,无论用户执行勾选还是取消操作,都会直接往数组中添加元素
  • 直接修改了原有selectedGroups状态数组的引用,不符合React状态不可变的更新原则,可能会导致视图无法正常触发重渲染
修复方案

步骤1:改造处理函数

优先使用React状态的函数式更新写法,保证每次拿到的都是最新的状态值,同时根据勾选状态做新增/移除的分支处理,TS类型也同步补全避免any类型:

import { ChangeEvent } from 'react';

// 若你的Checkbox值有固定枚举,可将string替换为对应枚举类型
const handleGroupChange = (e: ChangeEvent<HTMLInputElement>) => {
  const currentValue = e.target.value;
  const isChecked = e.target.checked;

  if (isChecked) {
    // 勾选时:先判断是否已存在,避免重复添加后返回新数组
    setSelectedGroups(prev => {
      if (!prev.includes(currentValue)) {
        return [...prev, currentValue];
      }
      return prev;
    });
  } else {
    // 取消勾选时:过滤掉当前值后返回新数组
    setSelectedGroups(prev => prev.filter(item => item !== currentValue));
  }
};

步骤2:Checkbox组件无需修改

你现有写的Checkbox组件代码可以直接沿用,无需额外调整,原生onChange事件已经自带checked和value属性可以直接读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:04