我将我的布局从jQuery移植到React.js。这是非常常见的一个,包括:
你可以想象实现很多(css)的东西正在进行中。我对可能的方法感到困惑。
这是我的:
class CoreLayout extends Component {
constructor(props) {
super(props)
this.state = {
sidenavCollapsed: false
}
}
onSidenavToggle() {
const { sidenavCollapsed } = this.state
document.body.classList.toggle('collapsed', !sidenavCollapsed)
this.setState({ sidenavCollapsed: !sidenavCollapsed })
}
render() {
const { sidenavCollapsed } = this.state
return (
<div>
<Header onSidenavToggle={::this.onSidenavToggle}></Header
<Sidenav>
<div className="content">content</div>
</div>
)
}
}
我根据附加到body元素的类来做所有样式:
.collapsed .header {}
.collapsed .sidenav {}
.collapsed .content {}
基本上它在220和60之间切换sidenav宽度和内容边距。
因此...
我应该将折叠属性传递给每个布局元素并单独添加类collapsed
吗?我想要实现的是similar to this。
执行fade-out-in
sidenav项目动画的正确方法是什么?直到现在我使用的是jQuery实用程序,但我不确定直接使用window.requestAnimationFrame()
是否正确。我试过ReactCSSTransitionGroup
没有成功。