/* Парус 8 - Панели мониторинга - Редактор панелей Компоненты: Хуки компонентов */ //--------------------- //Подключение библиотек //--------------------- import { useState, useEffect } from "react"; //Классы React //----------- //Тело модуля //----------- //Отложенная загрузка модуля компонента (как альтернативу можно применять React.lazy) const useComponentModule = ({ path = null, module = "view" } = {}) => { //Собственное состояние - импортированный модуль компонента const [componentModule, setComponentModule] = useState(null); //Собственное состояние - флаг готовности const [init, setInit] = useState(false); //При подмонтировании к странице useEffect(() => { //Динамическая загрузка модуля компонента из библиотеки const importComponentModule = async () => { setInit(false); const moduleContent = await import(`./${path}/${module}`); setComponentModule(moduleContent); setInit(true); }; if (path) importComponentModule(); }, [path, module]); //Возвращаем интерфейс хука return [componentModule, init]; }; //---------------- //Интерфейс модуля //---------------- export { useComponentModule };