From da6d13eab3f466a17e67aae4aa544bc0d8da7663 Mon Sep 17 00:00:00 2001 From: vasya Date: Sat, 11 Apr 2026 21:08:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D0=B0=20=D0=B2?= =?UTF-8?q?=D1=81=D0=BF=D0=BB=D1=8B=D0=B2=D0=B0=D1=8E=D1=89=D0=B8=D1=85=20?= =?UTF-8?q?=D0=BE=D0=BA=D0=BE=D0=BD.=20=D0=9F=D0=BE=D1=82=D0=BE=D0=BC=20?= =?UTF-8?q?=D1=8F=20=D0=BE=D1=82=D0=BA=D0=B0=D0=B7=D0=B0=D0=BB=D1=81=D1=8F?= =?UTF-8?q?=20=D0=BE=D1=82=20=D1=85=D1=83=D0=BA=D0=B0=20=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=20=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B1=D1=8B.?= =?UTF-8?q?=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D1=8F=D1=8E=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9=20=D0=B5=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D1=83=D0=B2=D0=B8=D0=B4=D0=B8=D1=82=D0=B5=20?= =?UTF-8?q?=D1=83=D0=BF=D0=BE=D0=BC=D0=B8=D0=BD=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=B4=D1=83=20=D1=8D=D1=82=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0,=20?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=B0=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BD=D0=B5=20=D0=BD=D0=B0=D0=B9=D0=B4=D0=B5?= =?UTF-8?q?=D1=82=D0=B5=20=D0=B8=20=D0=B1=D1=83=D0=B4=D0=B5=D1=82=D0=B5=20?= =?UTF-8?q?=D0=B4=D1=83=D0=BC=D0=B0=D1=82=D1=8C=20-=20=D0=BD=D1=83=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D0=B7=D0=B0=20=D0=BC=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA,=20=D0=BD=D0=B5=20=D0=B7=D0=B0=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B8=D0=BB=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/hooks/popup/MagicPopupHook.tsx | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 resources/js/hooks/popup/MagicPopupHook.tsx diff --git a/resources/js/hooks/popup/MagicPopupHook.tsx b/resources/js/hooks/popup/MagicPopupHook.tsx new file mode 100644 index 0000000..985734b --- /dev/null +++ b/resources/js/hooks/popup/MagicPopupHook.tsx @@ -0,0 +1,32 @@ +import { useState } from 'react'; +import { MagicPopupType } from '../../components/MagicPopupContainer'; + +export const MagicPopupHook = () => { + // //Стейт с набором попапов для отрисовки + // const [popupArr, setPopupArr] = useState( [] ); + // //ИСПОЛЬЗОВАНИЕ USECALLBACK? я не использую его для функций удаления и добавления новых попапов в этом хуке, что должно приводить к созданию новых экземпляров функций каждый вызов хука (удаление, добавления попапа). Функция добавления попапа является пропсом для TaxiForm, значит, содание нового экземпляра функции добавления попапа в хуке должно вызывать перерендер TaxiForm? Но я его не замечаю (нет мигания в дом дереве элемента где рендерится TaxiForm ни при создании, не при удалении попапа) + + // //Колбэк для добавление нового попапа. Его нужно передавать в каждый компонент, где планируется вызывать попапы. В аргументы этого колбэка передаются объекты с информацией для каждого попапа (текст, таймер и т.д.) + // function addPopup (newPopupArrData: MagicPopupType[]) { + // setPopupArr(prev => { + // //Конкатенируем предыдущее состояние набора попапов и новые попапы, присваивая новому попапу параметр id с уникальным рандомным значением + // return [...prev, ...newPopupArrData].map(popup => popup.id ? popup : {...popup, id: getRandomId()}) + // }); + // }; + + // //Колбэк для удаления попапа из набора + // function delPopup (popupDelKey: number) { + // setPopupArr(prev => { + // return prev.filter(popup => popup.id !== popupDelKey); + // }); + // }; + + // //Функция генерации случайного числа для формирования на его основе уникального идентификатора для каждого компонента попаппа + // function getRandomId(): number { return Date.now() - Math.random() }; + + // return { + // popupArr, + // addPopup, + // delPopup, + // } +}