在反应路由器中的路由之间 animate/transition 的正确方法是什么
What is the correct way to animate/transition between routes in react router
我试图找到有关在 react-router 中的路由之间设置动画的文档。
我看到以下内容issue has some discussion on it. Near the end of the comments, I see lulridge gave a pretty nice example
所以...这个例子是 correct/recommended 在 React 路由器中的路由之间设置动画的方式吗?无论路由中显示什么内容,图像,文本,这是否会导致路由之间的转换?
注意:它似乎有点对我有用,但过渡的平滑度似乎取决于有多少数据在每条路线之间加载。
JS
// the key part in your top level route/component e.g. Layout.js
// where you wrap the RouteHandler in the TransitionGroup
import React from 'react/addons'
let TransitionGroup = React.addons.CSSTransitionGroup;
let { RouteHandler, Link } = require('react-router')
<TransitionGroup component="div" transitionName="page-transition">
<RouteHandler {...this.props} />
</TransitionGroup>
CSS
.page-transition-enter {
-webkit-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
opacity: 0;
position: absolute;
}
.page-transition-enter.page-transition-enter-active {
opacity: 1;
}
.page-transition-leave {
-webkit-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
opacity: 1;
position: absolute;
}
.page-transition-leave.page-transition-leave-active {
opacity: 0;
}
是的,您做对了。请务必在 <RouteHandler/>
组件上指定一个唯一的 key
属性。路线名称通常是一个不错的选择。
对于以后接触到此内容的任何人,现在在 Add Ons/Animation section 下的 React github 文档中提供了动画文档。
原始问题中的代码与文档中的代码几乎相同,除了文档中的示例(下方)还包括推荐的转换超时。
<ReactCSSTransitionGroup transitionName="example" transitionEnterTimeout={500} transitionLeaveTimeout={300}>
{items}
</ReactCSSTransitionGroup>
有关 transitionEnterTimeout 和 transitionLeaveTimeout 属性到达 React 0.14 的信息,0.14 Release Notes:
中有少量关于它们的信息
Add-Ons: To improve reliability, 'CSSTransitionGroup' will no longer
listen to transition events. Instead, you should specify transition
durations manually using props such as 'transitionEnterTimeout={500}'.
随着 React Router v4 的推出,这变得容易多了。我们现在可以使用 HOC 在 RRv4 中进行转换。
我在 github/youtube 有视频和代码。
https://www.youtube.com/watch?v=MiOqASZnKqA
https://github.com/gpltaylor/react-router-workshop/
希望对你有用。
@gpltaylor
我试图找到有关在 react-router 中的路由之间设置动画的文档。
我看到以下内容issue has some discussion on it. Near the end of the comments, I see lulridge gave a pretty nice example
所以...这个例子是 correct/recommended 在 React 路由器中的路由之间设置动画的方式吗?无论路由中显示什么内容,图像,文本,这是否会导致路由之间的转换?
注意:它似乎有点对我有用,但过渡的平滑度似乎取决于有多少数据在每条路线之间加载。
JS
// the key part in your top level route/component e.g. Layout.js
// where you wrap the RouteHandler in the TransitionGroup
import React from 'react/addons'
let TransitionGroup = React.addons.CSSTransitionGroup;
let { RouteHandler, Link } = require('react-router')
<TransitionGroup component="div" transitionName="page-transition">
<RouteHandler {...this.props} />
</TransitionGroup>
CSS
.page-transition-enter {
-webkit-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
opacity: 0;
position: absolute;
}
.page-transition-enter.page-transition-enter-active {
opacity: 1;
}
.page-transition-leave {
-webkit-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
opacity: 1;
position: absolute;
}
.page-transition-leave.page-transition-leave-active {
opacity: 0;
}
是的,您做对了。请务必在 <RouteHandler/>
组件上指定一个唯一的 key
属性。路线名称通常是一个不错的选择。
对于以后接触到此内容的任何人,现在在 Add Ons/Animation section 下的 React github 文档中提供了动画文档。
原始问题中的代码与文档中的代码几乎相同,除了文档中的示例(下方)还包括推荐的转换超时。
<ReactCSSTransitionGroup transitionName="example" transitionEnterTimeout={500} transitionLeaveTimeout={300}> {items} </ReactCSSTransitionGroup>
有关 transitionEnterTimeout 和 transitionLeaveTimeout 属性到达 React 0.14 的信息,0.14 Release Notes:
中有少量关于它们的信息Add-Ons: To improve reliability, 'CSSTransitionGroup' will no longer listen to transition events. Instead, you should specify transition durations manually using props such as 'transitionEnterTimeout={500}'.
随着 React Router v4 的推出,这变得容易多了。我们现在可以使用 HOC 在 RRv4 中进行转换。
我在 github/youtube 有视频和代码。
https://www.youtube.com/watch?v=MiOqASZnKqA
https://github.com/gpltaylor/react-router-workshop/
希望对你有用。 @gpltaylor