Моя цель состоит в том, чтобы значок вращался на 90 градусов (стал плоским), а затем был заменен другим значком, создавая своего рода эффект вращения монет.
Я хочу затем вращаться при вводе и включении выход (задержка вызвана вызовом XHR).
По какой-то причине анимация запускается при входе, но не при выходе.
Это 3 типа сторон, * Состояние 1007 * является взаимоисключающим.
<div className={c.wrapper}>
<Transition in={loading} timeout={allTransitions}>
{state => (
<div style={{ ...defaultStyle, ...transitionStyles[state] }}>
{(loading) && <SyncIcon className={c.loadingIcon} />}
</div>
)}
</Transition>
<Transition in={success} timeout={allTransitions}>
{state => (
<div style={{ ...defaultStyle, ...transitionStyles[state] }}>
{(success) && <SuccessIcon className={c.successIcon} />}
</div>
)}
</Transition>
<Transition in={fail} timeout={allTransitions}>
{state => (
<div style={{ ...defaultStyle, ...transitionStyles[state] }}>
{(fail) && <FailIcon className={c.failIcon} />}
</div>
)}
</Transition>
</div>
А вот определения стиля:
const duration = 1000
const allTransitions = {
appear: duration,
enter: duration,
exit: duration
}
const easingFunction = 'ease-in-out'
const defaultStyle = {
transition: `transform ${duration}ms ${easingFunction}`,
transform: 'rotateY(90deg)',
alignSelf: 'center'
}
const transitionStyles = {
entering: { transform: 'rotateY(0deg)' },
entered: { transform: 'rotateY(0deg)' },
exiting: { transform: 'rotateY(90deg)' },
exited: { transform: 'rotateY(90deg)' },
}
Вот демоверсия: https://codesandbox.io/s/coin-state-indicator-3bnv4