Я использую реагирующая переходная группа для обработки анимированных CSSTransitions при рендеринге компонента. Я хочу простое исчезновение компонента.
Выходной переход вроде бы работает правильно, а вот переходный - нет.
Если я поставлю отладчик на свойство onEnter, я увижу, что переход на самом деле «должен» работать так, как ожидалось. Запускается состояние ввода-активности, элемент начинается с непрозрачности 0,1, и если я возобновляю работу отладчика, происходит переход.
Но без отладчика, когда компонент рендерится, даже если к компоненту добавляется состояние enter-active, оно просто сразу видно — непрозрачность не исчезает.
Вот мой код:
<TransitionGroup component = {null}>
{mobileSelectorsActive &&
<CSSTransition
classNames = "anim_mobile_selectors"
timeout = {5000}
//appear = {true}
//mountOnEnter = {true}
onEnter = {()=>{
//debugger;
}}
>
<div>...</div>
</CSSTransition>
}
</TransitionGroup>
и CSS:
.anim_mobile_selectors {
&-enter {
opacity: 0.1;
transition: opacity 5000ms linear;
}
&-enter-active, &-enter-done {
opacity:1;
}
&-exit {
opacity:1;
}
&-exit-active {
opacity: 0.1;
transition: opacity 5000ms linear;
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это немного хак, но на случай, если это поможет кому-то еще, я решил это, укоротив переход и поместив анимацию в состояние «конец»:
//JSX
<CSSTransition
classNames = "anim_mobile_selectors"
timeout = {{
enter: 100,
exit: 500,
}}
><div>...</div>
</CSSTransition>
//CSS
.anim_mobile_selectors {
&-enter {
opacity: 0.01;
}
&-enter-active {
opacity: 0.01;
}
&-enter-done {
opacity:1;
transition: opacity 500ms linear;
}
&-exit {
opacity:1;
}
&-exit-active {
opacity: 0.01;
transition: opacity 500ms linear;
}
}