react-reuse-hooks
Version:
A collection of 30+ production-ready reusable React hooks for web apps, covering state, effects, media, forms, and utilities.
25 lines (18 loc) • 598 B
JavaScript
import { useState, useEffect, useRef } from "react";
export function useFocus() {
const [focused, setFocused] = useState(false);
const ref = useRef();
useEffect(() => {
const node = ref.current;
if (!node) return;
const onFocus = () => setFocused(true);
const onBlur = () => setFocused(false);
node.addEventListener("focus", onFocus);
node.addEventListener("blur", onBlur);
return () => {
node.removeEventListener("focus", onFocus);
node.removeEventListener("blur", onBlur);
};
}, [ref]);
return [ref, focused];
}