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

React JS中如何实现勾选超过1个复选框时禁用按钮的功能

实现方案

原来的单布尔值状态无法追踪每个复选框的勾选情况,因此无法统计勾选数量,我们需要将状态替换为数组,单独记录每个复选框的勾选状态,再通过勾选数量判断按钮是否禁用。

完整实现代码

import React from "react";
import "./styles.css";
import { useState } from 'react'

export default function App() {
  // 数组存储每个复选框的勾选状态,初始三个都为未勾选
  const [checkedList, setCheckedList] = useState([false, false, false]);

  // 接收复选框索引,更新对应位置的勾选状态
  const handleCheckChange = (index) => {
    const newCheckedList = [...checkedList];
    newCheckedList[index] = !newCheckedList[index];
    setCheckedList(newCheckedList);
  };

  // 计算勾选数量,仅当恰好1个勾选时按钮启用
  const checkedCount = checkedList.filter(Boolean).length;
  const isButtonDisabled = checkedCount !== 1;

  return (
    <div className="App">
      <button disabled={isButtonDisabled}>Click Me</button>

      <input 
        type="checkbox" 
        onChange={() => handleCheckChange(0)}
        checked={checkedList[0]}
      />
      <input 
        type="checkbox" 
        onChange={() => handleCheckChange(1)}
        checked={checkedList[1]}
      />
      <input 
        type="checkbox" 
        onChange={() => handleCheckChange(2)}
        checked={checkedList[2]}
      />
    </div>
  );
}

逻辑说明

  • 状态用数组存储,每个元素对应一个复选框的勾选状态,后续需要增减复选框数量时,只要修改useState初始数组的长度即可
  • 每次勾选操作只更新对应索引位置的状态,不会影响其他复选框的状态
  • 按钮禁用逻辑同时匹配所有需求:
    • 勾选数量为0时,按钮禁用
    • 勾选数量≥2时,按钮禁用
    • 仅勾选数量恰好为1时,按钮激活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:36:02