【发布时间】:2016-06-28 04:06:43
【问题描述】:
我是反应和反应动画的新手。因此,在页面加载时“出现”动画一切正常。但现在我有一个问题。当我单击导航时,我希望新的 div 不仅立即显示,而且缓慢淡入(或该数学的任何其他动画),但它不起作用。
TLDR; onClick 事件不会使刚刚设置的动画成为一个新类。
也许有人知道如何让 ReactCSSTransitionGroup 仅在我浏览到网站的某些部分时才能工作?谢谢!
import React from "react";
import ReactDOM from "react-dom";
import ReactCSSTransitionGroup from "react-addons-css-transition-group";
export default class Nav extends React.Component {
constructor() {
super();
this.state = {
navStatus: "navHide"
};
}
navClose(e) {
e.stopPropagation();
this.setState({
navStatus: "navHide",
navLines: "navLines show"
});
}
navOpen() {
this.setState({
navStatus: "navShow",
navLines: "navLines hide"
});
}
render() {
return(
<nav>
<div className={this.state.navLines} onClick={this.navOpen.bind(this)}>
</div>
<ReactCSSTransitionGroup transitionName="navShow" transitionAppear={true} transitionEnterTimeout={500} transitionLeaveTimeout={300}>
<div id="myNav" className={this.state.navStatus}>
<div className="navClose" onClick={this.navClose.bind(this)}>
<img className="navCloseBtn" src="svg/close.svg"></img>
</div>
</div>
</ReactCSSTransitionGroup>
</nav>
);
}
}
【问题讨论】:
-
bind(..)调用次数过多。删除this.fn = this.fn.bind(this)语句。这些是没有吸引力和不必要的。你还在你的 onClick 处理程序中调用this.navClose.bind(this),这让我想知道你为什么首先制作别名...... -
当然想。我已经删除了它,看起来它没有任何目的。无论如何,也许你打电话帮我解决 ReactCssTransitionGroup?
-
见下面我的回答。我经常使用 ReactCSSTransitionGroups,可以回答您可能遇到的许多问题。
标签: javascript animation reactjs reactcsstransitiongroup