我让ReactCSSTransitionGroup工作得很好(我认为),新安装的组件在它的所有荣耀中都会消失。
问题是被替换的组件突然消失,这对我来说是一个问题,因为最终我希望我的组件进出视口...
我似乎没有任何方式告诉离开组件如何优雅地消失。
我是否遗漏了某些内容,或者ReactCSSTransitionGroup是否只能为传入的组件设置动画?
更新
以下代码:
import React from "react";
import ReactDOM from "react-dom";
import { Router, Route, IndexRoute, hashHistory, Link } from "react-router";
import ReactCSSTransitionGroup from "react-addons-css-transition-group";
class PageOne extends React.Component {
render() {
return (
<ReactCSSTransitionGroup transitionName="example" transitionAppear={true} transitionAppearTimeout={500} transitionEnterTimeout={500} transitionLeaveTimeout={500}>
<div>
HI FROM PAGE ONE<br />
<br />
<Link to="two">Take me to Page Two</Link>
</div>
</ReactCSSTransitionGroup>
);
}
}
class PageTwo extends React.Component {
render() {
return (
<ReactCSSTransitionGroup transitionName="example" transitionAppear={true} transitionAppearTimeout={500} transitionEnterTimeout={500} transitionLeaveTimeout={500}>
<div>
HELLO FROM PAGE TWO<br />
<br />
<Link to="/">Go back to Page One</Link>
</div>
</ReactCSSTransitionGroup>
);
}
}
const app = document.getElementById('app');
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={PageOne}></Route>
<Route path="two" component={PageTwo}></Route>
</Router>,
app);
CSS:
.example-enter {
opacity: 0.01;
}
.example-enter.example-enter-active {
opacity: 1;
transition: opacity 500ms ease-in;
}
.example-leave {
opacity: 1;
}
.example-leave.example-leave-active {
opacity: 0.01;
transition: opacity 300ms ease-in;
}
答案 0 :(得分:4)
好吧,看起来他们已经解决了,直到现在我才发现它。
React-Router git repo有一个示例列表,其中一个是“Animation”。此演示展示了如何利用ReactCSSTransitionGroup通过克隆元素和分配键来动画输入/输出“页面”。
https://reacttraining.com/react-router/web/example/animated-transitions
答案 1 :(得分:2)
我创建了一个bin,可以正常安装/卸载组件。看一看,让我知道它是否与您正在做的相似,但仍然无法解决问题