微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 react-router-dom 实现带有子侧边栏的侧边栏?

如何解决如何使用 react-router-dom 实现带有子侧边栏的侧边栏?

我正在尝试制作一个带有子侧边栏侧边栏,其中主侧边栏中的每个项目都有一些需要在子侧边栏中列出的子项目。 如下图所示。

enter image description here

解决方法

所以它相当复杂,但你会理解并获得所有代码

首先,让我们创建样式

* {
    margin: 0;
    padding: 0;

    box-sizing: border-box;
}

body {
    height: 100vh;
}

body > #root {
    height: 100%;
    width: 100%;
}


body > #root > #sidebar {
    float: left;
    width: 20%;
    height: 100%;

    background: #EBE9EB;
    border-right: solid 1px black;
}

body > #root > #sub-sidebar {
    float: left;
    width: 20%;
    height: 100%;

    background: #EBE9EB;
}

body > #root > #content {
    float: left;
    width: 60%;
    height: 100%;

    background: white;
}

在应用组件内部放置

import * as React from "react";
import "./style.css";

export default class App extends React.Component {
  state = {
    sidebar: 0,// index of the sidebar
    sub_sidebar: 0,// index of the sub sidebar
  }

  // method to rendering the content
  renderingTheContent = () => {
    // switching the content with index of sidebar and the sub-sidebar
    switch (this.state.sidebar) {
      case 0:
        switch (this.state.sub_sidebar) {
          case 0:
            return <span>overview</span>;
          case 1:
            return <span>hello</span>;
        }
      case 1:
        switch (this.state.sub_sidebar) {
          case 0:
            return <span>hola</span>;
          case 1:
            return <span>shop</span>;
        }
      case 2:
        switch (this.state.sub_sidebar) {
          case 0:
            return <span>black</span>;
          case 1:
            return <span>red</span>;
        }
    }
  }

  // method to rendering the sub sidebar
  renderingTheSubSideBar = () => {
    // switching the sub-sidebar with index of sidebar
    switch (this.state.sidebar) {
      case 0:
        return (
          <ul>
            <li onClick={() => this.setSubSideBar(0)}>overview</li>
            <li onClick={() => this.setSubSideBar(1)}>hello</li>
          </ul>
        );
      case 1:
        return (
          <ul>
            <li onClick={() => this.setSubSideBar(0)}>hola</li>
            <li onClick={() => this.setSubSideBar(1)}>shop</li>
          </ul>
        );
      case 2:
        return (
          <ul>
            <li onClick={() => this.setSubSideBar(0)}>black</li>
            <li onClick={() => this.setSubSideBar(1)}>red</li>
          </ul>
        );
    }
  }

  render() {
    return (
      <React.Fragment>
        {/*first side bar*/}
        <div id={"sidebar"}>
          <ul>
            <li onClick={() => this.setSideBar(0)}>Dashboard</li>
            <li onClick={() => this.setSideBar(1)}>hello</li>
            <li onClick={() => this.setSideBar(2)}>welcome</li>
          </ul>
        </div>

        {/*the sub side bar*/}
        <div id={"sub-sidebar"}>
          {this.renderingTheSubSideBar()}
        </div>

        {/*the content*/}
        <div id={"content"}>
          {this.renderingTheContent()}
        </div>
      </React.Fragment>
    );
  };

  // set the new index of the sidebar
  setSideBar = (newSidebar) => {
    this.setState({sidebar: newSidebar});
  }

  // set the new index of the sub sidebar
  setSubSideBar = (newSubSidebar) => {
    this.setState({sub_sidebar: newSubSidebar});
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?