Я хотел бы анимировать между двумя компонентами, где первый компонент исчезает и удаляется из DOM, прежде чем следующий компонент будет добавлен в DOM и затухает. В противном случае новый компонент добавляется к DOM и занимает место перед удалением старого компонента. Вы можете увидеть проблему в этой скрипке:Активировать переход между компонентами
http://jsfiddle.net/phepyezx/4
// css snippet
.switch-enter {
opacity: 0.01;
}
.switch-enter.switch-enter-active {
opacity: 1.0;
}
.switch-leave {
opacity: 1.0;
}
.switch-leave.switch-leave-active {
opacity: 0;
}
// React snippet
<ReactCSSTransitionGroup transitionName="switch">
<div key={key} className={className}>{this.text()}</div>
</ReactCSSTransitionGroup>
неприемлемое решение (для меня), чтобы скрыть оригинальный компонент с помощью CSS, прежде чем перейти к новому компоненту, как показано здесь:
http://jsfiddle.net/phepyezx/5
// Change to css
.switch-leave {
visibility: hidden;
height: 0px;
width: 0px;
opacity: 1.0;
}
есть ли способ, чтобы «задержка» реакции от монтажа нового компонента, прежде чем оригинал удаляется? Для этого я открыт для скорости или какой-либо другой библиотеки.
Благодаря
@JonnyBuchanan Оба ваших подхода кажутся вам полезными. Теперь, когда прошло какое-то время, какой подход вы нашли лучше всего для вас? @RickJolly, ваш подход работает лучше всего для определенных сценариев? Достаточно ли он масштабируется до больших списков (детей) в ReactCSSTransitionGroup? Насколько я понимаю, ваш подход требует дополнительного цикла «render()» (может быть, дополнительный цикл для каждого удаляемого элемента?). Вы обнаружили, что иметь преимущества или недостатки? (Возможно, отладка - возможно, ее четкость в том, что происходит с дополнительным «render()»?) –
Также, о том, что компоненты, которые должны быть анимированы, должны реализовывать 'componentWillUnmount', а также принимать' handleTransitionEnd() ' как «prop» ... вы обнаружили, что это боль для других ситуаций? –