state-hooks
Version:
Essential set of React Hooks for convenient state management.
30 lines (29 loc) • 870 B
JavaScript
import { useCallback } from 'react';
/* eslint-disable jsdoc/valid-types */
/**
* Wraps a state hook to add boolean toggle functionality.
*
* @param useStateResult Return value of a state hook.
* @param useStateResult.0 Current state.
* @param useStateResult.1 State updater function.
* @returns State hook result extended with a `toggle` function.
*
* @example
* function Component() {
* const [isPressed, setPressed, togglePressed] = useToggle(
* useState<boolean>(false),
* );
* // ...
* return (
* <button type="button" aria-pressed={isPressed} onClick={togglePressed}>
* Toggle state
* </button>
* );
* }
*/
export default function useToggle([value, setValue]) {
const toggleValue = useCallback(() => {
setValue((prevValue) => !prevValue);
}, [setValue]);
return [value, setValue, toggleValue];
}