Вы можете сделать это с помощью ключевых кадров CSS
this.state = {
visible: false
}
componentDidMount() {
this.setState({visible: true})
}
<div className={this.state.visible
? "backdrop"
: null}>
</div>
.backdrop {
z-index: 1;
background-color: white;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
animation-name: animate-backdrop;
animation-duration: 2s;
animation-timing-function: linear;
}
@keyframes animate-backdrop {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0%);
}
}
Не уверен, какой у вас уровень мастерства в CSS, но z index 1 обеспечит фон для всего вашего контента. Фактическая анимация будет выполнена с помощью transform и translateX.
React Router не должен играть никакой роли в этом. Вы можете выполнить анимацию в самом компоненте, когда компонент сначала загружается, изменив состояние свойства visible с false на true, это даст этому пустому div имя класса CSS, которое вызовет анимацию.
Таким образом, по существу, когда компонент загружается, состояние изменяется, и анимация будет иметь место.
Вы не предоставили свой код, но приведенного здесь кода должно быть достаточно, чтобы позволить вам реализовать эту функцию.