无法在我的侧边栏中展开菜单项以做出反应

Posted

技术标签:

【中文标题】无法在我的侧边栏中展开菜单项以做出反应【英文标题】:Having trouble uncollapsing a menu item in my sidebar in react 【发布时间】:2021-06-18 18:45:01 【问题描述】:

我有一个侧边栏,其中包含一些项目,其中两个项目是可折叠的项目,称为“菜单”和“页面”。这些项目应该在点击时折叠和展开,但由于某种原因我无法做到这一点。

这是我的代码:

    import React from "react";
    import Flower from "../../Images/flower.png";
    import "./SideBar.css";
    import $ from "jquery";


    class SideBar extends React.Component 

    componentDidMount () 
        $(document).ready(function () 
            $('#sidebarCollapse').on('click', function () 
                $('#sidebar').toggleClass('active');
            );
        );
    

  render () 
    return (
    <div>
        <div className="wrapper">
            <nav id="sidebar">
                <div className="sidebar-header">
                <h3>`Bootstrap Sidebar`</h3>
                <strong>BS</strong>
                </div>

                <ul className="list-unstyled components">
                    <li className="active">
                        <a href="#homeSubmenu" data-toggle="collapse" aria-expanded="false" className="dropdown-toggle">
                            <i className="fas fa-home"></i>
                            Home
                        </a>
                        <ul className="collapse list-unstyled" id="homeSubmenu">
                            <li>
                                <a href="#">Home 1</a>
                            </li>
                            <li>
                                <a href="#">Home 2</a>
                            </li>
                            <li>
                                <a href="#">Home 3</a>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <a href="#">
                            <i className="fas fa-briefcase"></i>
                            About
                        </a>
                        <a href="#pageSubmenu" data-toggle="collapse" aria-expanded="false" className="dropdown-toggle">
                            <i className="fas fa-copy"></i>
                            Pages
                        </a>
                        <ul className="collapse list-unstyled" id="pageSubmenu">
                            <li>
                                <a href="#">Page 1</a>
                            </li>
                            <li>
                                <a href="#">Page 2</a>
                            </li>
                            <li>
                                <a href="#">Page 3</a>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <a href="#">
                            <i className="fas fa-image"></i>
                            Portfolio
                        </a>
                    </li>
                    <li>
                        <a href="#">
                            <i className="fas fa-question"></i>
                            FAQ
                        </a>
                    </li>
                    <li>
                        <a href="#">
                            <i className="fas fa-paper-plane"></i>
                            Contact
                        </a>
                    </li>
                </ul>

                <ul className="list-unstyled CTAs">
                    <li>
                        <a href="" className="download">Download source</a>
                    </li>
                    <li>
                        <a href="" className="article">Back to article</a>
                    </li>
                </ul>
            </nav>

            <div id="content">

                <nav className="navbar navbar-expand-lg navbar-light bg-light">
                    <div className="container-fluid">

                        <button type="button" id="sidebarCollapse" className="btn btn-info">
                            <i className="fas fa-align-left"></i>
                            <span>Toggle Sidebar</span>
                        </button>
                        <button className="btn btn-dark d-inline-block d-lg-none ml-auto" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                            <i className="fas fa-align-justify"></i>
                        </button>

                        <div className="collapse navbar-collapse" id="navbarSupportedContent">
                            <ul className="nav navbar-nav ml-auto">
                                <li className="nav-item active">
                                    <a className="nav-link" href="#">Page</a>
                                </li>
                                <li className="nav-item">
                                    <a className="nav-link" href="#">Page</a>
                                </li>
                                <li className="nav-item">
                                    <a className="nav-link" href="#">Page</a>
                                </li>
                                <li className="nav-item">
                                    <a className="nav-link" href="#">Page</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </nav>

                <h2>Collapsible Sidebar Using Bootstrap 4</h2>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

                <div className="line"></div>

                <h2>Lorem Ipsum Dolor</h2>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

                <div className="line"></div>

                <h2>Lorem Ipsum Dolor</h2>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

                <div className="line"></div>

                <h3>Lorem Ipsum Dolor</h3>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
            </div>
        </div>

    </div>
    );
  

  
  export default SideBar;

这是我的 CSS:

/* .sidebar 
  font-family: 'Dancing Script', cursive;
  font-size: 1.5rem;
 */

/*
    DEMO STYLE
*/

@import "https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700";
body 
    font-family: 'Poppins', sans-serif;
    background: #fafafa;


p 
    font-family: 'Poppins', sans-serif;
    font-size: 1.1em;
    font-weight: 300;
    line-height: 1.7em;
    color: #999;


a,
a:hover,
a:focus 
    color: inherit;
    text-decoration: none;
    transition: all 0.3s;


.navbar 
    padding: 15px 10px;
    background: #fff;
    border: none;
    border-radius: 0;
    margin-bottom: 40px;
    box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);


.navbar-btn 
    box-shadow: none;
    outline: none !important;
    border: none;


.line 
    width: 100%;
    height: 1px;
    border-bottom: 1px dashed #ddd;
    margin: 40px 0;


i,
span 
    display: inline-block;


/* ---------------------------------------------------
    SIDEBAR STYLE
----------------------------------------------------- */

.wrapper 
    display: flex;
    align-items: stretch;


#sidebar 
    min-width: 250px;
    max-width: 250px;
    background: #7386D5;
    color: #fff;
    transition: all 0.3s;


#sidebar.active 
    min-width: 80px;
    max-width: 80px;
    text-align: center;


#sidebar.active .sidebar-header h3,
#sidebar.active .CTAs 
    display: none;


#sidebar.active .sidebar-header strong 
    display: block;


#sidebar ul li a 
    text-align: left;


#sidebar.active ul li a 
    padding: 20px 10px;
    text-align: center;
    font-size: 0.85em;


#sidebar.active ul li a i 
    margin-right: 0;
    display: block;
    font-size: 1.8em;
    margin-bottom: 5px;


#sidebar.active ul ul a 
    padding: 10px !important;


#sidebar.active .dropdown-toggle::after 
    top: auto;
    bottom: 10px;
    right: 50%;
    -webkit-transform: translateX(50%);
    -ms-transform: translateX(50%);
    transform: translateX(50%);


#sidebar .sidebar-header 
    padding: 20px;
    background: #6d7fcc;


#sidebar .sidebar-header strong 
    display: none;
    font-size: 1.8em;


#sidebar ul.components 
    padding: 20px 0;
    border-bottom: 1px solid #47748b;


#sidebar ul li a 
    padding: 10px;
    font-size: 1.1em;
    display: block;


#sidebar ul li a:hover 
    color: #7386D5;
    background: #fff;


#sidebar ul li a i 
    margin-right: 10px;


#sidebar ul li.active>a,
a[aria-expanded="true"] 
    color: #fff;
    background: #6d7fcc;


a[data-toggle="collapse"] 
    position: relative;


.dropdown-toggle::after 
    display: block;
    position: absolute;
    top: 50%;
    right: 20px;
    transform: translateY(-50%);


ul ul a 
    font-size: 0.9em !important;
    padding-left: 30px !important;
    background: #6d7fcc;


ul.CTAs 
    padding: 20px;


ul.CTAs a 
    text-align: center;
    font-size: 0.9em !important;
    display: block;
    border-radius: 5px;
    margin-bottom: 5px;


a.download 
    background: #fff;
    color: #7386D5;


a.article,
a.article:hover 
    background: #6d7fcc !important;
    color: #fff !important;


/* ---------------------------------------------------
    CONTENT STYLE
----------------------------------------------------- */

#content 
    width: 100%;
    padding: 20px;
    min-height: 100vh;
    transition: all 0.3s;


/* ---------------------------------------------------
    MEDIAQUERIES
----------------------------------------------------- */

@media (max-width: 768px) 
    #sidebar 
        min-width: 80px;
        max-width: 80px;
        text-align: center;
        margin-left: -80px !important;
    
    .dropdown-toggle::after 
        top: auto;
        bottom: 10px;
        right: 50%;
        -webkit-transform: translateX(50%);
        -ms-transform: translateX(50%);
        transform: translateX(50%);
    
    #sidebar.active 
        margin-left: 0 !important;
    
    #sidebar .sidebar-header h3,
    #sidebar .CTAs 
        display: none;
    
    #sidebar .sidebar-header strong 
        display: block;
    
    #sidebar ul li a 
        padding: 20px 10px;
    
    #sidebar ul li a span 
        font-size: 0.85em;
    
    #sidebar ul li a i 
        margin-right: 0;
        display: block;
    
    #sidebar ul ul a 
        padding: 10px !important;
    
    #sidebar ul li a i 
        font-size: 1.3em;
    
    #sidebar 
        margin-left: 0;
    
    #sidebarCollapse span 
        display: none;
    

提前感谢您浏览所有这些代码行并帮助我。

【问题讨论】:

【参考方案1】:

原来我从 bootstrap 和 popper 中丢失了一些 CDN。

【讨论】:

以上是关于无法在我的侧边栏中展开菜单项以做出反应的主要内容,如果未能解决你的问题,请参考以下文章

在您的 package.json 中为反应组件添加依赖项以做出反应的正确方法是啥

在操作栏中更改菜单项的视图

菜单栏中的菜单项未激活,无法选择或单击

Openlayers - 侧边栏中的复选框事件

Rails + JQuery 侧边栏下拉菜单立即关闭

以子菜单项相对于父菜单项将块居中