/
obuxxxov
/
CodeForge
Обзор
Документация
Войти
/
obuxxxov
/
CodeForge
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
comb
visual/src/DataRefreshContext.tsx
54 строки
2 KB
ObliInSe
обновляются рекомендации
19 авг 2025, 01:12
19 авг 2025, 01:12
48808c4
Код
Авторство
О чём код?
import React, { createContext, useContext, useState, useCallback } from 'react'; import type { ReactNode } from 'react'; interface DataRefreshContextType { refreshData: () => Promise<void>; isRefreshing: boolean; } const DataRefreshContext = createContext<DataRefreshContextType | undefined>(undefined); export const useDataRefresh = () => { const context = useContext(DataRefreshContext); if (context === undefined) { throw new Error('useDataRefresh must be used within a DataRefreshProvider'); } return context; }; interface DataRefreshProviderProps { children: ReactNode; } export const DataRefreshProvider: React.FC<DataRefreshProviderProps> = ({ children }) => { const [isRefreshing, setIsRefreshing] = useState(false); const refreshData = useCallback(async () => { if (isRefreshing) return; // Предотвращаем множественные обновления setIsRefreshing(true); try { console.log('🔄 Обновляем данные во всех компонентах...'); // Генерируем событие для обновления данных window.dispatchEvent(new CustomEvent('refreshData')); console.log('✅ Событие обновления данных отправлено'); } catch (error) { console.error('❌ Ошибка при обновлении данных:', error); } finally { setIsRefreshing(false); } }, [isRefreshing]); const contextValue: DataRefreshContextType = { refreshData, isRefreshing }; return ( <DataRefreshContext.Provider value={contextValue}> {children} </DataRefreshContext.Provider> ); };