复选框

复选框是标准复选框元素的扩展,带有主题。


import { Checkbox } from 'primereact/checkbox';
         

复选框用作受控输入,具有 checkedonChange 属性。


<Checkbox onChange={e => setChecked(e.checked)} checked={checked}></Checkbox>
         

多个复选框可以组合在一起。


<div className="flex flex-wrap justify-content-center gap-3">
    <div className="flex align-items-center">
        <Checkbox inputId="ingredient1" name="pizza" value="Cheese" onChange={onIngredientsChange} checked={ingredients.includes('Cheese')} />
        <label htmlFor="ingredient1" className="ml-2">Cheese</label>
    </div>
    <div className="flex align-items-center">
        <Checkbox inputId="ingredient2" name="pizza" value="Mushroom" onChange={onIngredientsChange} checked={ingredients.includes('Mushroom')} />
        <label htmlFor="ingredient2" className="ml-2">Mushroom</label>
    </div>
    <div className="flex align-items-center">
        <Checkbox inputId="ingredient3" name="pizza" value="Pepper" onChange={onIngredientsChange} checked={ingredients.includes('Pepper')} />
        <label htmlFor="ingredient3" className="ml-2">Pepper</label>
    </div>
    <div className="flex align-items-center">
        <Checkbox inputId="ingredient4" name="pizza" value="Onion" onChange={onIngredientsChange} checked={ingredients.includes('Onion')} />
        <label htmlFor="ingredient4" className="ml-2">Onion</label>
    </div>
</div>
         

可以使用值列表生成复选框。


{categories.map((category) => {
    return (
        <div key={category.key} className="flex align-items-center">
            <Checkbox inputId={category.key} name="category" value={category} onChange={onCategoryChange} checked={selectedCategories.some((item) => item.key === category.key)} />
            <label htmlFor={category.key} className="ml-2">{category.name}</label>
        </div>
    );
})}
         

无效状态使用 invalid 属性显示,以指示验证失败。 在与表单验证库集成时,可以使用此样式。


<Checkbox invalid={!checked} onChange={(e) => setChecked(e.checked)} checked={checked}></Checkbox>
         

variant 属性指定为 filled 以显示组件,使其视觉效果比默认的 outlined 样式更突出。


<Checkbox onChange={e => setChecked(e.checked)} checked={checked}></Checkbox>
         

当存在 disabled 时,该元素无法编辑和聚焦。


<Checkbox checked disabled></Checkbox>
         

屏幕阅读器

复选框组件内部使用一个隐藏的本机复选框元素,该元素仅对屏幕阅读器可见。描述组件的值可以通过 label 标签与 inputId 属性结合使用或使用 aria-labelledbyaria-label 属性提供。


<label htmlFor="chkbox1">Remember Me</label>
<Checkbox inputId="chkbox1" />

<span id="chkbox2">Remember Me</span>
<Checkbox aria-labelledby="chkbox2" />

<Checkbox aria-label="Remember Me" />
         

键盘支持

功能
tab将焦点移动到复选框。
空格键切换选中状态。