To handle route transitions and animations in React applications using React Router, you can use:
1. <TransitionGroup> and <CSSTransition> from react-transition-group:
These allow you to animate components as they enter or exit the DOM during route changes.
2. Implementation Steps:
npm install react-transition-group
Example:
import { Routes, Route, useLocation } from 'react-router-dom';
import { CSSTransition, TransitionGroup } from 'react-transition-group';
import './styles.css'; // include your transition styles
const AnimatedRoutes = () => {
const location = useLocation();
return (
<TransitionGroup>
<CSSTransition key={location.pathname} classNames="fade" timeout={300}>
<Routes location={location}>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</CSSTransition>
</TransitionGroup>
);
};
CSS (styles.css):
.fade-enter {
opacity: 0;
}
.fade-enter-active {
opacity: 1;
transition: opacity 300ms ease-in;
}
.fade-exit {
opacity: 1;
}
.fade-exit-active {
opacity: 0;
transition: opacity 300ms ease-in;
}