css - React-transition-group 过渡不会在退出时触发动画
问题描述
我的目标是让一个图标旋转 90 度(变平),然后被另一个图标取代,创造一种硬币旋转的效果。
然后我想在进入和退出时旋转(由于 XHR 调用而存在延迟)。
出于某种原因,动画是在进入时触发的,而不是在退出时触发的。
这些是 3 侧类型,in
状态是互斥的。
<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)' },
}
解决方案
原因是在退出动画生效之前loading
就变成了。false
- 您需要删除条件渲染。
- 更改所有过渡“位于”彼此顶部的 CSS
推荐阅读
- timeout - 当文本在会话中换行时出现问题
- python - 如何在特定数据子集上前滚并修改原始数据集?
- google-apps-script - Apps 脚本中 HTML 评估的目的是什么?
- google-colaboratory - 获取特定类 imagenet 的 URL
- python - 如何使用 python 重新排列和映射数据从一个 CSV 到另一个 CSV
- android - Android Q:从文件加载图像
- r - 在R中用两条线绘制折线图
- go - GO编码/解码
- c++ - 如何重载 delete[] 运算符以显示被释放的字节数?
- pdf - 在浏览器中使用与 URL 不同的文件名打开文件 (pdf)