元素来创建复选框。通过 checked 和 onChange 属性…">
当前位置:首页 > React

react 如何制作复选框

2026-01-25 00:30:26React

使用原生 HTML 复选框

在 React 中可以直接使用 HTML 的 <input type="checkbox"> 元素来创建复选框。通过 checkedonChange 属性控制状态:

function CheckboxExample() {
  const [isChecked, setIsChecked] = React.useState(false);

  return (
    <label>
      <input
        type="checkbox"
        checked={isChecked}
        onChange={(e) => setIsChecked(e.target.checked)}
      />
      Check me
    </label>
  );
}

自定义复选框组件

如果需要更灵活的样式控制,可以创建自定义复选框组件:

function CustomCheckbox({ checked, onChange, label }) {
  return (
    <label style={{ display: 'flex', alignItems: 'center' }}>
      <div
        style={{
          width: 20,
          height: 20,
          border: '2px solid #333',
          borderRadius: 4,
          marginRight: 8,
          backgroundColor: checked ? '#333' : 'transparent',
          position: 'relative'
        }}
      >
        {checked && (
          <div style={{
            position: 'absolute',
            top: 2,
            left: 6,
            width: 5,
            height: 10,
            border: 'solid white',
            borderWidth: '0 2px 2px 0',
            transform: 'rotate(45deg)'
          }} />
        )}
      </div>
      <input
        type="checkbox"
        checked={checked}
        onChange={onChange}
        style={{ display: 'none' }}
      />
      {label}
    </label>
  );
}

复选框组实现

处理多个复选框时,可以使用对象或数组来管理状态:

function CheckboxGroup() {
  const [options, setOptions] = React.useState({
    option1: false,
    option2: false,
    option3: false
  });

  const handleChange = (option) => {
    setOptions(prev => ({
      ...prev,
      [option]: !prev[option]
    }));
  };

  return (
    <div>
      {Object.keys(options).map(option => (
        <label key={option}>
          <input
            type="checkbox"
            checked={options[option]}
            onChange={() => handleChange(option)}
          />
          {option}
        </label>
      ))}
    </div>
  );
}

使用第三方库

对于更复杂的需求,可以使用现成的 React 复选框组件库:

  • material-ui 提供的 Checkbox 组件
  • antdCheckbox 组件
  • react-checkbox 等专门库
import { Checkbox } from '@material-ui/core';

function MaterialCheckbox() {
  const [checked, setChecked] = React.useState(true);

  return (
    <Checkbox
      checked={checked}
      onChange={(e) => setChecked(e.target.checked)}
      inputProps={{ 'aria-label': 'primary checkbox' }}
    />
  );
}

无障碍访问

确保复选框遵循 WAI-ARIA 标准:

  • 使用 <label> 关联复选框
  • 为自定义复选框添加适当的 ARIA 属性
  • 确保键盘可操作
<label htmlFor="unique-id">
  <input
    id="unique-id"
    type="checkbox"
    aria-checked={isChecked}
    checked={isChecked}
    onChange={handleChange}
  />
  Accessible checkbox
</label>

react 如何制作复选框

标签: 复选框react
分享给朋友:

相关文章

react如何记忆

react如何记忆

React 记忆技术 在 React 中,记忆(Memoization)是一种优化技术,用于避免不必要的重新渲染或计算。React 提供了多种内置方法和第三方库来实现记忆功能。 useMemo H…

vue表格实现复选框

vue表格实现复选框

Vue表格实现复选框的方法 基础实现(使用v-model绑定数组) 在Vue中可以通过v-model绑定数组来实现复选框功能。以下是一个基础示例: <template> <t…

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…