【问题标题】:How to make sub menus for nav link?如何为导航链接制作子菜单?
【发布时间】:2020-12-18 13:47:32
【问题描述】:

您好,我是新手,想在我的菜单中实现子菜单。

我想要的是这样的报告 > 我的报告 > MIS 报告

我正在从 react 路由器 dom 导入和使用 NavLink。

菜单目前看起来像这样,没有子菜单:

这是我使用导航栏链接的代码:

export const mainListItems = (
  <List>
    <NavLink to="dashboard">
      <ListItem button>
        <ListItemIcon></ListItemIcon>
        <ListItemText primary="Dashboard" />
      </ListItem>
    </NavLink>
    <NavLink to="userform">
      <ListItem button>
        <ListItemIcon></ListItemIcon>
        <ListItemText primary="Registration" />
      </ListItem>
    </NavLink>
    <NavLink to="">
      <ListItem button>
        <ListItemIcon></ListItemIcon>
        <ListItemText primary="Report" />
      </ListItem>
    </NavLink>
  </List>
);
This is the link in my App.js

const App = () => (
  <HashRouter>
    <Switch>
      <Route path="/signin" component={SignIn} />
      <Route path="/userform" component={UserForm} />
      <Route path="/dashboard" component={Dashboard} />

      <Redirect from="/" to="signin" />
    </Switch>
  </HashRouter>
);
I need some direction in this. How do I implement my own sub menus

【问题讨论】:

    标签: reactjs react-router material-ui react-router-dom


    【解决方案1】:

    Ciao,对于嵌套导航,您可以使用 Material UI 中的 ListItemCollapse 组件,如下所示:

           <ListItem button onClick={this.handleClick}>  // Report level
              <ListItemIcon>
                <InboxIcon />
              </ListItemIcon>
              <ListItemText primary="Report" />
              {open ? <ExpandLess /> : <ExpandMore />}
            </ListItem>
            <Collapse in={open} timeout="auto" unmountOnExit>  //first nested level
              <List component="div" disablePadding>
                <ListItem
                  button
                  style={styles.nested}
                  onClick={this.handleClickSecondLevel}
                >
                  <ListItemIcon>
                    <StarBorder />
                  </ListItemIcon>
                  <ListItemText primary="My Report" />
                  {openSecondLevel ? <ExpandLess /> : <ExpandMore />}
                </ListItem>
                <Collapse in={openSecondLevel} timeout="auto" unmountOnExit>  // second nested level
                  <List component="div" disablePadding>
                    <ListItem button style={styles.nestedSecondLevel}>
                      <ListItemIcon>
                        <StarBorder />
                      </ListItemIcon>
                      <ListItemText primary="MIS Report" />
                    </ListItem>
                  </List>
                </Collapse>
              </List>
            </Collapse>
    

    Here 使用类组件的代码框示例。

    【讨论】:

    • 嗨乔瓦尼,再次感谢,但你能为给定的代码提供一个沙箱吗?如果问的不是太多?
    • @sandeeppradhan 我成功了 :) 在这里codesandbox.io/s/material-demo-forked-4s2db?file=/demo.js
    • 嗨乔瓦尼再次感谢,但当我尝试导入它时,它什么也没有
    • 我正在导出和导入一个 const 图标,所以那里有问题?
    • 要将我的代码应用到您的代码中,只需将您的 ListItem 替换为我的 ListItem(通过保留 NavLink)。另一件事:我不知道您要导入什么图标,但根据您的代码,您没有在 ListItemIcon 中插入任何图标。尝试执行以下操作:&lt;ListItemIcon&gt;&lt;StarBorder /&gt;&lt;/ListItemIcon&gt;,您应该会在 ListItem 附近看到一个星形图标
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多