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

如何在Ant Design复选框组中实现仅允许单选单个选项的功能

实现方案

要实现Checkbox组仅单选的效果,核心是通过统一的状态变量管理选中项,自动处理选项间的互斥逻辑,修改后代码如下:

import { Checkbox } from 'antd';
import { useState } from 'react';

const category = [
  { label: "Gardening", value: "Gardening" },
  { label: "Plants", value: "Plants" },
  { label: "Seeds", value: "Seeds" },
  { label: "Bulbs", value: "Bulbs" },
  { label: "Planters", value: "Planters" },
];

export default function SideMenus({ sideOpen, setSideOpen }) {
  // 存储当前唯一选中的分类值
  const [selectedCategory, setSelectedCategory] = useState(null);

  const handleCheckChange = (currentValue, isChecked) => {
    if (isChecked) {
      // 选中新选项时直接替换为当前值,自动覆盖之前的选中项
      setSelectedCategory(currentValue);
    } else {
      // 取消当前选中项时清空状态
      setSelectedCategory(null);
    }
  };
 
  return (
      <div className="row">
        {category.map((item) => {
          return (
            <div className="col-sm-12 px-3 py-2" key={item.label}>
              <Checkbox 
                checked={selectedCategory === item.value}
                onChange={(e) => handleCheckChange(item.value, e.target.checked)}
              >
                {item.value}
              </Checkbox>
            </div>
          );
        })}
      </div>
  );
}

逻辑说明

  • 用selectedCategory状态变量统一管理选中项,同一时间最多只会存一个选项的值
  • 每个Checkbox的选中状态由自身值是否等于selectedCategory决定,确保同一时间只有一个选项被选中
  • 若你的业务本身就是单选场景,也可以直接使用Ant Design原生的Radio组件,无需额外处理互斥逻辑,若需要Checkbox的视觉样式,自定义覆盖Radio的默认样式即可。

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

相关产品推荐
方舟 Agent Plan

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

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