useFocus
Handles focus events for the immediate target. Focus events on child elements will be ignored.
| install | yarn add @react-aria/interactions |
|---|---|
| version | 3.0.0-rc.2 |
| usage | import {useFocus} from '@react-aria/interactions' |
API#
useFocus(props: FocusProps): FocusResultFeatures#
useFocus handles focus interactions for an element. Unlike React's builtin focus events,
useFocus does not fire focus events for child elements of the target. This matches DOM
behavior where focus events do not bubble. This is similar to
the :focus pseudo class
in CSS.
To handle focus events on descendants of an element, see useFocusWithin.
Usage#
useFocus returns props that you should spread onto the target element:
| Name | Type | Description |
focusProps | HTMLAttributes<HTMLElement> | Props to spread onto the target element. |
useFocus supports the following event handlers:
| Name | Type | Description |
onFocus | (e: FocusEvent) => void | Handler that is called when the element receives focus. |
onBlur | (e: FocusEvent) => void | Handler that is called when the element loses focus. |
onFocusChange | (isFocused: boolean) => void | Handler that is called when the element's focus status changes. |
Example#
This example shows a simple input element that handles focus events with useFocus and logs them to a list below.
NOTE: for more advanced text field functionality, see useTextField.
function Example() {
let [events setEvents] = ReactuseState([]);
let {focusProps} = useFocus({
onFocus: e => setEvents(
events => [...events 'focus']
)
onBlur: e => setEvents(
events => [...events 'blur']
)
onFocusChange: isFocused => setEvents(
events => [...events `focus change: `]
)
});
return (
<>
<input
...focusProps
aria-label="Example"
placeholder="Focus me!" />
<ul>
eventsmap((e i) => <li key=i>e</li>)
</ul>
</>
);
}| Name | Type | Description |
isDisabled | boolean | Whether the focus events should be disabled. |
onFocus | (e: FocusEvent) => void | Handler that is called when the element receives focus. |
onBlur | (e: FocusEvent) => void | Handler that is called when the element loses focus. |
onFocusChange | (isFocused: boolean) => void | Handler that is called when the element's focus status changes. |
| Name | Type | Description |
focusProps | HTMLAttributes<HTMLElement> | Props to spread onto the target element. |