UNPKG

@noizy23yo/raect-router-dom

Version:

39 lines (33 loc) 940 B
// src/LoaderNavLink.jsx import React, { useState } from "react"; import { NavLink, useNavigate } from "react-router-dom"; const LoaderNavLink = ({ to, children, activeCSS, inActiveCSS, ...rest }) => { const [loading, setLoading] = useState(false); const navigate = useNavigate(); const handleClick = (e) => { e.preventDefault(); setLoading(true); const delay = Math.floor(Math.random() * 11000) + 10000; // Random delay between 10-20 seconds setTimeout(() => { setLoading(false); navigate(to); }, delay); }; return ( <> {loading ? ( <div>Loading...</div> ) : ( <NavLink {...rest} to={to} className={({ isActive }) => (isActive ? activeCSS : inActiveCSS)} onClick={handleClick} > {children} </NavLink> )} </> ); }; export default LoaderNavLink;