【发布时间】:2020-01-22 05:43:30
【问题描述】:
我尝试使用以下条件在React (v 16.5) 中创建折叠和展开侧边菜单 -
页面加载时第一个项目(通告)将在展开视图中。任何一个项目都可以一次展开,例如,如果用户单击第二个项目(规格),第一个项目将折叠。我还想要一些 CSS 动画在折叠/展开事务期间,比如平滑地向下/向上每个项目的主体部分并更改箭头图标。我的方法是动态添加/删除每个项目 (sidebar-nav-menu-item) 上的 CSS 类,例如 -
sidebar-nav-menu-item item-active
因此,当一个项目处于展开视图时,它应该像上面的类,并在其处于折叠视图时删除 item-active。默认情况下,当 item 处于折叠模式时,body divs (sidebar-nav-menu-item-body) 应该通过 CSS 隐藏。
import React, { Component } from 'react';
className SidebarNavs extends React.Component{
constructor(props) {
super(props);
}
render() {
return(
<div className="sidebar-nav">
<div className="sidebar-nav-menu">
<div className="sidebar-nav-menu-item" data-id="circulars">
<div className="sidebar-nav-menu-item-head" onClick={this.handleExpandCollaps}>
<div className="sidebar-nav-menu-item-head-title">Circulars</div>
<div className="sidebar-nav-menu-item-head-help">
<button type="button" className="btn-help" onClick={this.moreInfoClick}>View more info</button>
</div>
<div className="sidebar-nav-menu-item-head-icon">
<i className="fa fa-caret-down" aria-hidden="true"></i>
</div>
</div>
<div className="sidebar-nav-menu-item-body">BODY CONTENT HERE</div>
</div>
<div className="sidebar-nav-menu-item" data-id="specifications">
<div className="sidebar-nav-menu-item-head" onClick={this.handleExpandCollaps}>
<div className="sidebar-nav-menu-item-head-title">Specifications</div>
<div className="sidebar-nav-menu-item-head-help">
<button type="button" className="btn-help" onClick={this.moreInfoClick}>View more info</button>
</div>
<div className="sidebar-nav-menu-item-head-icon">
<i className="fa fa-caret-down" aria-hidden="true"></i>
</div>
</div>
<div className="sidebar-nav-menu-item-body">BODY CONTENT HERE</div>
</div>
<div className="sidebar-nav-menu-item" data-id="wo">
<div className="sidebar-nav-menu-item-head" onClick={this.handleExpandCollaps}>
<div className="sidebar-nav-menu-item-head-title">Work Orders</div>
<div className="sidebar-nav-menu-item-head-help">
<button type="button" className="btn-help" onClick={this.moreInfoClick}>View more info</button>
</div>
<div className="sidebar-nav-menu-item-head-icon">
<i className="fa fa-caret-down" aria-hidden="true"></i>
</div>
</div>
<div className="sidebar-nav-menu-item-body">BODY CONTENT HERE</div>
</div>
</div>
</div>
)
}
}
export default SidebarNavs;
CSS:
.sidebar-nav-menu-item{
display:block;
}
.sidebar-nav-menu-item-body{
display:none;
}
.sidebar-nav-menu-item.item-active .sidebar-nav-menu-item-body{
display:block;
}
【问题讨论】:
-
那太好了,因为我需要每个部分的正文部分都应该平滑显示,并且标题上的图标,它应该在展开时向上箭头。
-
fa-caret-down 应该是 fa-caret-up
标签: javascript reactjs