У меня есть группа ReactCSSTransitionGroup, которую я использую с модулями CSS (и динамическая маршрутизация от реагирующего маршрутизатора, но я считаю, что это работает так, как ожидалось).
<ReactCSSTransitionGroup
component="div"
transitionName={transitions}
transitionAppear
transitionAppearTimeout={1000}
transitionEnterTimeout={2000}
transitionLeaveTimeout={2000}
>
{React.cloneElement(this.props.children, {
key: location.pathname,
})}
</ReactCSSTransitionGroup>
Переходы appear
и leave
работают отлично, а переходы enter
нет - они просто появляются сразу, а предыдущий компонент исчезает после того, как появился новый компонент.
CSS (с использованием модулей CSS):
.enter {
opacity: 0.01;
}
.enter.enterActive {
opacity: 1;
transition: opacity 500ms ease-in;
}
.leave.leaveActive {
opacity: 0.01;
transition: opacity 2000ms ease-in;
}
.appear {
opacity: 0.1;
transition: opacity 1000ms ease-out;
}
.appearActive {
opacity: 1;
transition: opacity 1000ms ease-out;
}
--- ИЗМЕНИТЬ ---
Я обнаружил, что он работает так, как ожидалось, на дочерних маршрутах (в моем приложении их всего несколько). Все маршруты, включая дочерние маршруты, загружаются динамически, поэтому я до сих пор не уверен, что заставляет его работать в этих случаях, но не в других.