Beta Preview

useLabel

Provides the accessibility implementation for labels and their associated elements. Labels provide context for user inputs.

Example

The useLabel hook associates a label with a field. It automatically handles creating an id for the field and associates the label with it.

import {useLabel} from '@react-aria/label';

function ColorField(props) {
  let {labelProps, fieldProps} = useLabel(props);

  return (
    <>
      <label {...labelProps}>{props.label}</label>
      <select {...fieldProps}>
        <option>Indigo</option>
        <option>Maroon</option>
        <option>Chartreuse</option>
      </select>
    </>
  );
}

<ColorField label="Favorite color" />

By default, useLabel assumes that the label is a native HTML label element. However, if you are labeling a non-native form element, be sure to use an element other than a <label> and set the labelElementType prop appropriately.

API

useLabel(props: ):

LabelAriaProps

NameTypeDefault
aria-detailsstringDefault:
Identifies the element (or elements) that provide a detailed, extended description for the object.
aria-describedbystringDefault:
Identifies the element (or elements) that describes the object.
aria-labelledbystringDefault:
Identifies the element (or elements) that labels the current element.
aria-labelstringDefault:
Defines a string value that labels the current element.
idstringDefault:
The element's unique identifier. See MDN.
labelReactNodeDefault:
The content to display as the label.
labelElementTypeElementTypeDefault: 'label'
The HTML element used to render the label, e.g. 'label', or 'span'.

LabelAria

NameType
fieldProps
Props to apply to the field container element being labeled.
labelPropsDOMAttributesLabelHTMLAttributes<HTMLLabelElement>
Props to apply to the label container element.