export const SnackBarContext = createContext()
const AUTO_DISMISS = 5000
export function SnackBarProvider({ children }) {
const [alerts, setAlerts] = useState([])
const activeAlertIds = alerts.join(',')
useEffect(() => {
if (activeAlertIds.length > 0) {
const timer = setTimeout(() => setAlerts((alerts) => alerts.slice(0, alerts.length - 1)), AUTO_DISMISS)
return () => clearTimeout(timer)
}
}, [activeAlertIds])
const addAlert = (alert) => setAlerts((alerts) => [alert, ...alerts])
const value = { addAlert }
return (
<SnackBarContext.Provider value={value}>
{children}
{alerts.map((alert) => <SnackBar key={alert}>{alert}</SnackBar>)}
</SnackBarContext.Provider>
)
}
Last active
April 16, 2021 13:55
-
-
Save rtymchyk/b8ee7b8ddf3d7fb510f099fa14905bdb to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, you are missing a
)at the end here: