ReactJS 中的页面转换和组件动画

2023-12-05

我想要的效果:

  • 当页面加载组件 A、B 和 C 时独立启动动画
  • 用户单击组件 B 内的链接
  • 组件 A、B 和 C 独立启动
  • 加载新页面,更多组件呈现动画。

这听起来很简单,但我正在努力实现它。到目前为止,我已经使用了许多路线设置react-routerv4,我正在使用CSSTransitionGroup为路线和组件添加移动。

我遇到的问题是:

  • 如果路线是动画的,我似乎无法对被调用的组件内的任何内容进行动画处理。当然,组件离开时的动画将不起作用。
  • 如果单独的组件(而不是路线)具有动画效果,则当路线更改时,任何动画的发生都不会出现延迟。

任何有关如何实现这种预期效果的提示或资源都会很棒!

TL;DR:transitionLeaveTimeout 未应用于动画路线内的动画组件。


我找到了一个解决方案,但它不是特别优雅。

简而言之,问题的发生是因为从技术上讲,由路由渲染的任何组件都只能appear。所以我要做的就是使用路线的render函数,就像这样:

<CSSTransitionGroup
transitionName="test"
transitionAppear={true}
transitionAppearTimeout={1000}
transitionEnterTimeout={1000}
transitionLeaveTimeout={1000}>

<Route exact path="/about" location={this.props.location} key={this.props.location.key} render={({ location }) => (

    <CSSTransitionGroup
    transitionName="test2"
    transitionAppear={true}
    transitionAppearTimeout={2000}
    transitionEnterTimeout={1000}
    transitionLeaveTimeout={1000}>

        <AboutBox key={this.props.location.key} />

    </CSSTransitionGroup>

)} />

</CSSTransitionGroup>

所以这里发生的是:

  • 该路线被包裹在一个过渡组中,这意味着它在出现、进入和离开时有动画效果
  • 路线本身没有使用component=,它正在使用渲染函数(render=) 调用组件 (AboutBox)
  • 因为它也包含在过渡组中,所以可以在出现、进入和离开时进行动画处理

如果我将该过渡组移至组件本身,则仅出现对其可用。

希望这对某人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactJS 中的页面转换和组件动画 的相关文章

随机推荐

  • 严重:无法初始化 Jenkins [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我已经在 Linux 上安装了 jenkins 但是当我尝试启动服务器时 它出现
  • MFC 中的 libmodbus

    我正在尝试将 libmodbus 提供的 modbus 库集成到 Visual Studio 2010 中的自定义 MFC 项目中 到目前为止我所遵循的步骤如下 1 我在 Visual Studio 2010 中创建了项目 如下面的快照所示
  • 逼近非参数三次贝塞尔曲线

    近似三次贝塞尔曲线的最佳方法是什么 理想情况下 我想要一个函数 y x 它可以给出任何给定 x 的精确 y 值 但这将涉及求解每个 x 值的三次方程 这对于我的需求来说太慢了 并且可能存在数值稳定性问题以及这种方法 Would this是一
  • CMUSphinx PocketSphinx - 识别所有(或大量)单词

    在我尝试使用 Android 版 PocketSphinx 之前 我使用了 Google 的语音识别 API 我不需要设置搜索名称或字典文件 它只是识别了所说的每一个字 现在 在 PocketSphinx 中 我需要这样做 但我只能找到如何
  • mongo-php-library 和 MongoDB 驱动程序有什么区别

    mongo php library 和 MongoDB 驱动程序有什么区别 它们在性能和功能方面有何不同 优缺点都有什么 我们目前在生产中使用 mongo php library 如下所示 connection new MongoDB Cl
  • 当用户到达页面底部时隐藏 div

    我想在用户滚动并到达页面底部时隐藏 div 元素 并在用户向上滚动时再次显示它 例如 考虑以下名为 nav 的导航栏 HTML div class nav div CSS nav width 100 height 50px position
  • 谷歌地图 android api v2 应用程序崩溃

    我正在使用 Eclipse helios 和 Android 4 1 2 我已遵循以下文档https docs google com document pub id 19nQzvKP CVLd7 VrpwnHfl AE9fjbJySowON
  • 样式表或 JavaScript 文件的 Rails 404 错误

    Rails 无法在生产中加载 404 错误 CSS 和 JS 文件 但在开发中加载它们没有问题 我使用 Capistrano 进行部署并运行 Rails 3 我的开发路径是 www myapp但我的生产之路是 www myapp 当前 应用
  • 使用 VSTS Rest API 设置 git repo 权限

    有没有办法使用 VSTS Rest API 设置 git 存储库的权限 我有一个创建存储库的脚本 我想扩展它以设置一些默认权限 授予项目集合构建服务贡献权限 我读了图形用户界面文档并浏览了其余 API 文档但看不到我可以通过 API 设置存
  • 为多个系列创建折线图

    我的工作表中有如下数据 Day Area AVG Time 2013 07 01 LINE1 49 703432 2013 07 02 LINE1 38 119913 2013 07 03 LINE1 30 6651 2013 07 04
  • 临时解压缩文件以在浏览器中查看内容

    我想解压一个包含 html 页面 css 和 js 目录的文件 我想暂时解压缩它并在 iFrame 中查看 html 最好是这样 我正在使用 jszip 它正在工作 我已经加载了 html 但如何将图像 js 和 css 文件夹添加到 iF
  • 两个数组之间的余弦距离计算 - Python [重复]

    这个问题在这里已经有答案了 我想应用一个函数fn 这本质上是cosine distance对两个形状为 10000 100 和 5000 100 的大型 numpy 数组按行进行计算 即我为这些数组中的每个行组合计算一个值 我的实现 imp
  • 移动图中的多个盒子?

    我已经拥有在 MATLAB 中拖放图形中的单个框所需的函数 我编写的代码在图中填充了几个方框 通过另一个循环 我用更多的框填充了图形 其中以字符串形式保存不同的信息 这两组框通过我在其 UserData 中放置的数字相关 对应的数字 对于每
  • 当输入获得焦点时动画父 div

    我正在尝试做到这一点 以便当有人单击输入框时它会升到屏幕顶部 我能够完成这项工作 但我无法让父 div 中的其他内容随之移动 这是我所拥有的 container input search bar focus position absolut
  • Android Facebook 开放图谱?

    我很好奇是否可以获得 Open Graph 方面的帮助 因为我似乎无法从我读过的 Facebook API 中获得任何意义 现在我已经在 Facebook 上设置了我的 Open Graph 应用程序 已获批准 我正在尝试通过捆绑参数提交我
  • 调暗非活动形式

    使用 Form ShowDialog 打开对话框表单时 我想用灰色阴影调暗应用程序的其余部分 从我自己的研究来看 这样做的方法似乎是打开一个黑色背景且不透明度小于 100 的无边框表单 但我还没有将所有部分放在一起 了解它是如何工作的 或者
  • 如何在流(java)中添加日期时间值?

    今天我开始学习 Java 8 所以我对 Java 8 及其相关的东西还很陌生 我有一份活动清单 活动有名称 开始时间 结束时间 对于 startTime 和 endTime 我使用 joda 时间中的 DateTime 我正在尝试确定映射形
  • Swift:设置 rootViewController 不起作用?

    我正在尝试启动一个新的 Swift 项目 这是我第一次尝试以编程方式创建视图 然而 我的控制器看起来根本没有被加载 我所看到的只是启动屏幕 然后当我将其加载到模拟器上时出现黑屏 这是我的 AppDelegate import UIKit U
  • 带有 TypeScript 错误的 Angular HTTP GET http.get(...).map 不是 [null] 中的函数

    我在 Angular 中遇到 HTTP 问题 我只想GET a JSON列出并在视图中显示它 服务等级 import Injectable from angular2 core import Hall from hall import Ht
  • ReactJS 中的页面转换和组件动画

    我想要的效果 当页面加载组件 A B 和 C 时独立启动动画 用户单击组件 B 内的链接 组件 A B 和 C 独立启动 加载新页面 更多组件呈现动画 这听起来很简单 但我正在努力实现它 到目前为止 我已经使用了许多路线设置react ro