Я использую компонент TransitionGroup
, чтобы обеспечить эффект перехода страницы, который заменяет существующий компонент на новый, когда пользователь перемещается по интерфейсу, похожему на путешествие.
const { stepId, children } = this.props;
<TransitionGroup className="journey">
<CSSTransition
timeout={300}
classNames="journey-step"
unmountOnExit
key={stepId}>
<div className="journey-step">
{children}
</div>
</CSSTransition>
</TransitionGroup>
Этовсе работает отлично, за исключением того, что дети должны запускать какую-то работу, как только они представлены.Очевидное решение состоит в том, чтобы начать эту работу при монтировании (используя componentDidMount()
или подобное), но в некоторых случаях это приводит к обновлению пользовательского интерфейса во время эффекта перехода и вызывает неприятный UX.
В идеале ребенок не станет ничего делать, пока полностью не перейдет в поле зрения.CSSTransition
предоставляет событие onEntered
, которое было бы идеальным триггером для начала обработки, но я не могу придумать, как связать это событие с детьми.
Я использую ReactJS16,2;может быть, есть какие-то новые опции, доступные для меня?
Этот контейнер хочет быть независимым от дочерних элементов, размещенных в нем, поэтому я ищу решение, которое делает событие перехода доступным для интересующего дочернего компонента.в нем.