Я работаю над приложением, которое построено на внешнем интерфейсе с использованием реакции, редукции и реакции-маршрутизатора-редукции для навигации, и у меня нет большого опыта работы с интерфейсом. Когда мне нужно выполнить маршрутизацию с одной страницы на другую, сначала мне нужно показать анимацию, а затем, когда анимация закончится, мне нужно перейти на другую страницу. Я думал о запуске одного действия, которое добавит класс анимации, и когда это действие завершится, должен ли я использовать что-то похожее, например, setTimeout, поэтому, когда анимация заканчивается, действие push будет запущено из react-router-redux ? Каковы другие пути решения проблемы?
Анимация перед перенаправлением на другую страницу с использованием react, redux и react-router-redux
comment
Ваше предложение установить тайм-аут звучит разумно, но может быть даже лучше, если действие, устанавливающее класс анимации, возвращает обещание, устанавливает сам тайм-аут, а затем разрешает обещание по истечении тайм-аута.
- person Samo   schedule 25.08.2016
Ответы (1)
Вы можете использовать react-addons-css-transition-group
ReactCSSTransitionGroup
основан наReactTransitionGroup
и представляет собой простой способ выполнения переходов и анимации CSS, когда компонент React входит или выходит из DOM. Он вдохновлен превосходной библиотекой ng-animate.
Это будет вызывать переход в вашем основном макете каждый раз, когда вы меняете маршрут.
CSS
.example-enter {
opacity: 0.01;
transition: opacity .5s ease-in;
}
.example-enter.example-enter-active {
opacity: 1;
}
.example-leave {
opacity: 1;
transition: opacity .5s ease-in;
}
.example-leave.example-leave-active {
opacity: 0;
}
JS
import React from 'react'
import ReactCSSTransitionGroup from 'react-addons-css-transition-group'
const App = ({ children, location }) => (
<div>
<ul>
<li><Link to="/page1">Page 1</Link></li>
<li><Link to="/page2">Page 2</Link></li>
</ul>
<ReactCSSTransitionGroup
component="div"
transitionName="example"
transitionEnterTimeout={500}
transitionLeaveTimeout={500}
>
{React.cloneElement(children, {
key: location.pathname
})}
</ReactCSSTransitionGroup>
</div>
)
person
Dmitriy Nevzorov
schedule
25.08.2016