Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 18x 18x 7x 18x 2x 18x | import { useState, useCallback } from "react";
export interface ModalState<T = unknown> {
isOpen: boolean;
data: T | null;
}
export function useModalState<T = unknown>() {
const [state, setState] = useState<ModalState<T>>({
isOpen: false,
data: null,
});
const open = useCallback((data?: T) => {
setState({
isOpen: true,
data: data ?? null,
});
}, []);
const close = useCallback(() => {
setState({
isOpen: false,
data: null,
});
}, []);
return {
isOpen: state.isOpen,
data: state.data,
open,
close,
};
}
|