2016-03-31 09:40:55 +08:00
|
|
|
---
|
|
|
|
order: 7
|
|
|
|
iframe: true
|
|
|
|
title: Router 默认进出场
|
|
|
|
---
|
2015-10-21 17:53:38 +08:00
|
|
|
|
|
|
|
router 组合的进场与出场动画。
|
|
|
|
|
|
|
|
````jsx
|
2015-10-28 20:55:49 +08:00
|
|
|
const ReactRouter = require('react-router');
|
2016-02-17 16:42:26 +08:00
|
|
|
let { Router, Route, Link, hashHistory } = ReactRouter;
|
2015-10-28 20:55:49 +08:00
|
|
|
import { QueueAnim, Menu } from 'antd';
|
2015-10-21 17:53:38 +08:00
|
|
|
|
2016-04-21 11:36:51 +08:00
|
|
|
function App(props) {
|
|
|
|
const key = props.location.pathname;
|
|
|
|
const keys = key.replace('/', '') ? [key.replace('/', '')] : ['home'];
|
|
|
|
return (
|
|
|
|
<div>
|
|
|
|
<Menu style={{ marginBottom: 10 }} mode="horizontal" selectedKeys={keys}>
|
|
|
|
<Menu.Item key="home">
|
|
|
|
<Link to="/">首页</Link>
|
|
|
|
</Menu.Item>
|
|
|
|
<Menu.Item key="page1">
|
|
|
|
<Link to="/page1">Page 1</Link>
|
|
|
|
</Menu.Item>
|
|
|
|
<Menu.Item key="page2">
|
|
|
|
<Link to="/page2">Page 2</Link>
|
|
|
|
</Menu.Item>
|
|
|
|
</Menu>
|
|
|
|
<QueueAnim type={['right', 'left']} className="demo-router-wrap">
|
|
|
|
{React.cloneElement(props.children || <Home />, { key })}
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
|
2016-04-21 11:36:51 +08:00
|
|
|
function Home() {
|
|
|
|
return (
|
|
|
|
<div className="demo-router-child">
|
|
|
|
<QueueAnim className="demo-content">
|
|
|
|
<div className="demo-kp" key="a">
|
|
|
|
<QueueAnim component="ul">
|
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
<div className="demo-kp" key="b">
|
|
|
|
<QueueAnim component="ul">
|
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
<div className="demo-kp" key="c">
|
|
|
|
<QueueAnim component="ul">
|
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function Page1() {
|
|
|
|
return (
|
|
|
|
<div className="demo-router-child">
|
|
|
|
<QueueAnim className="demo-content">
|
|
|
|
<div className="demo-kp" key="b">
|
|
|
|
<QueueAnim component="ul">
|
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
<div className="demo-listBox">
|
|
|
|
<QueueAnim className="demo-list" delay={200}>
|
|
|
|
<div className="title" key="title3"></div>
|
|
|
|
<QueueAnim component="ul" animConfig={{ opacity: [1, 0], translateY: [0, 30], scale: [1, 0.9] }} key="ul">
|
2015-10-23 22:37:42 +08:00
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
2015-10-21 17:53:38 +08:00
|
|
|
</QueueAnim>
|
2016-04-21 11:36:51 +08:00
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
</QueueAnim>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
|
2016-04-21 11:36:51 +08:00
|
|
|
function Page2() {
|
|
|
|
return (
|
|
|
|
<div className="demo-router-child">
|
|
|
|
<div className="demo-content">
|
|
|
|
<div className="demo-listBox">
|
|
|
|
<QueueAnim className="demo-list">
|
|
|
|
<div className="title" key="title3"></div>
|
|
|
|
<QueueAnim component="ul" animConfig={{ opacity: [1, 0], translateY: [0, 30], scale: [1, 0.9] }} key="li">
|
2015-10-23 22:37:42 +08:00
|
|
|
<li key="0"></li>
|
|
|
|
<li key="1"></li>
|
|
|
|
<li key="2"></li>
|
2016-04-21 11:36:51 +08:00
|
|
|
<li key="3"></li>
|
|
|
|
<li key="4"></li>
|
|
|
|
<li key="5"></li>
|
2015-10-21 17:53:38 +08:00
|
|
|
</QueueAnim>
|
2016-04-21 11:36:51 +08:00
|
|
|
</QueueAnim>
|
2015-10-21 17:53:38 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
2016-04-21 11:36:51 +08:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
|
2015-10-23 14:53:57 +08:00
|
|
|
ReactDOM.render((
|
2016-02-17 16:42:26 +08:00
|
|
|
<Router history={hashHistory}>
|
2015-10-21 17:53:38 +08:00
|
|
|
<Route path="/" component={App} ignoreScrollBehavior>
|
|
|
|
<Route path="page1" component={Page1} />
|
|
|
|
<Route path="page2" component={Page2} />
|
|
|
|
</Route>
|
|
|
|
</Router>
|
2015-12-29 12:08:58 +08:00
|
|
|
), mountNode);
|
2015-10-21 17:53:38 +08:00
|
|
|
````
|
|
|
|
|
2015-10-23 22:37:42 +08:00
|
|
|
````css
|
2016-03-08 15:13:59 +08:00
|
|
|
#components-queue-anim-demo-router iframe {
|
|
|
|
height: 260px;
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
#components-queue-anim-demo-router .demo-router-wrap {
|
2015-10-21 17:53:38 +08:00
|
|
|
position: relative;
|
|
|
|
width: 100%;
|
|
|
|
margin: auto;
|
|
|
|
height:200px;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
#components-queue-anim-demo-router .queue-anim-leaving {
|
2015-10-21 17:53:38 +08:00
|
|
|
position: absolute;
|
|
|
|
width:100%;
|
|
|
|
}
|
2015-10-23 22:37:42 +08:00
|
|
|
````
|