fixed code
This commit is contained in:
21
src/hooks/useModals.jsx
Normal file
21
src/hooks/useModals.jsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import { useState, useCallback } from "react";
|
||||
|
||||
/**
|
||||
* Управляет всеми модалками MainFeed через единое состояние,
|
||||
* чтобы гарантировать что открыта максимум одна модалка сразу.
|
||||
*
|
||||
* Типы: "create" | "edit" | "profile" | "auth" | "rules" | "viewer"
|
||||
*/
|
||||
export function useModals() {
|
||||
const [modal, setModal] = useState(null); // { type, payload }
|
||||
|
||||
const open = useCallback((type, payload = null) => {
|
||||
setModal({ type, payload });
|
||||
}, []);
|
||||
|
||||
const close = useCallback(() => setModal(null), []);
|
||||
|
||||
const isOpen = useCallback((type) => modal?.type === type, [modal]);
|
||||
|
||||
return { modal, open, close, isOpen };
|
||||
}
|
||||
Reference in New Issue
Block a user