我一直在使用类来控制开/关行为,并使用CSS过渡效果。我在其他组件上使用过这个方法,没有问题,但出现在这种情况下失败的原因仍不清楚...
开/关行为附加(我看到背景颜色和translateY的最终差异),但是CSS过渡本身丢失了... 有什么想法吗?为什么我失去了CSS过渡,但其他所有东西都正常工作呢?
请注意,当我使用开发者工具手动切换“打开/关闭”类时,它可以正常工作!CSS过渡效果也能够实现!
那么,React在点击切换类时发生了什么?为什么会失去CSS过渡效果呢?
class Projects extends React.Component {
/* constructor, etc... */
render() {
return (
<div className="projects-nav-container">
<div className="center title monospace" onClick={this.props._toggleProjectNav} id="Menu">Menu</div>
<ul className={`projects-nav ${this.props._isProjectNavOpen ? 'open' : 'closed'}`}>
{ PROJECTS.map((project, index) =>
<li key={index} >
<p>project here</p>
</li>
) }
</ul>
</div>
);
}
}
App.js看起来如下:
class App extends React.Component {
constructor() {
super();
this.state = {
_isProjectNavOpen: true
}
this._toggleProjectNav = this._toggleProjectNav.bind(this);
}
_toggleProjectNav() {
this.setState(prevState => ({
_isProjectNavOpen: !prevState._isProjectNavOpen,
}));
}
render() {
<div>
<Router>
<Route path="/projects" component={(props, state, params) =>
<Projects
_toggleProjectNav={this._toggleProjectNav}
_isProjectNavOpen={this.state._isProjectNavOpen}
{...props} />} />
</Router>
</div>
}
}
SCSS:
.projects-nav {
@include transition(all $transition_speed ease);
&.open {
@include transform(translateY(0));
background: red
}
&.closed {
@include transform(translateY(-100vh));
background: green;
}
}
class
属性会闪烁? - DanRoute
和Router
包装Projects
,请尝试一下它是否有效?另外,您使用的是哪个react-router版本? - Jordan Enev