/
githubmirror
/
traefik
Обзор
Документация
Войти
/
githubmirror
/
traefik
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
webui/src/contexts/toasts.tsx
40 строк
1 KB
Gina A.
Migrate Traefik Proxy dashboard UI to React
28 май 2025, 12:26
Не верифицирован
28 май 2025, 12:26
f16fff5
Код
Авторство
О чём код?
import * as React from 'react' import { ToastState } from 'components/Toast' function handleHideToast(toast: ToastState): (t: ToastState) => ToastState { return (t: ToastState): ToastState => { if (t === toast) { t.isVisible = false } return t } } interface ToastProviderProps { children: React.ReactNode } interface ToastContextProps { toasts: ToastState[] addToast: (toast: ToastState) => void hideToast: (toast: ToastState) => void } export const ToastContext = React.createContext({} as ToastContextProps) export const ToastProvider = (props: ToastProviderProps) => { const [toasts, setToastList] = React.useState<ToastState[]>([]) const addToast = React.useCallback((toast: ToastState) => { setToastList((toasts) => [...toasts, toast]) }, []) const hideToast = React.useCallback((toast: ToastState) => { setToastList((toasts) => toasts.map(handleHideToast(toast))) }, []) const value: ToastContextProps = { toasts, addToast, hideToast } return <ToastContext.Provider value={value}>{props.children}</ToastContext.Provider> }