добавляю все изменения проекта на текущий момент
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { useState } from 'react';
|
||||
import { MagicPopupType } from '../../components/MagicPopupContainer';
|
||||
|
||||
export const MagicPopupHook = () => {
|
||||
// //Стейт с набором попапов для отрисовки
|
||||
// const [popupArr, setPopupArr] = useState<MagicPopupType[] | []>( [] );
|
||||
// //ИСПОЛЬЗОВАНИЕ 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,
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import React, { useState } from "react";
|
||||
import Preloader from "../../components/preloader/Preloader";
|
||||
|
||||
//Хук для формирования пропсов управления состояний прелоадера, экспортируемых в компоненты страницы, где планируется вызывать прелоадер
|
||||
export const MagicPreloaderHook = () => {
|
||||
//Стейт для видимости прелоадера
|
||||
const [preloaderVisibleState, setPreloaderVisibleState] = useState<boolean>(true);
|
||||
//Стейт для текста прелоадера
|
||||
const [preloaderTextState, setPreloaderTextState] = useState<string>('загрузка');
|
||||
//Сеттер для смены состояний прелоадера
|
||||
function setPreloaderParams (visibleState: boolean, textState?: string)
|
||||
{
|
||||
setPreloaderVisibleState(visibleState)
|
||||
textState ? setPreloaderTextState(textState) : true, []
|
||||
};
|
||||
|
||||
return {
|
||||
setPreloaderParams,
|
||||
PreloaderComponent: ( {preloaderVisible = preloaderVisibleState, preloaderText = preloaderTextState} ) => (
|
||||
<Preloader
|
||||
visible={preloaderVisible}
|
||||
text={preloaderText}
|
||||
/>
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user