Material UI Menu using routes

前端 未结 12 917
悲哀的现实
悲哀的现实 2020-12-17 08:59

I am toying with material-ui. I implemented LeftNav using routes, but I could not find a way to get IconMenu, or Menu working with links or routes. Anyone can point me to a

相关标签:
12条回答
  • 2020-12-17 09:12

    After doing a little searching myself I went with a slightly different solution:

    <MenuItem onClick={() => {handleClose("/#about")}}>About me</MenuItem>
    

    With a supporting JS function:

    function handleClose(nav) {
        window.location.href = nav;
    }
    

    Hopefully proves of use as an alternative.

    0 讨论(0)
  • 2020-12-17 09:17

    None of the existing answers (of September 2018) worked for me with react 16.4.2 and react-router 4.2.2, so this was my solution:

    <Link to='/notifications' style={{ textDecoration: 'none' }}>
       <MenuItem>Notifications</MenuItem>
    </Link>
    

    As you can see, the MenuItem component is surrounded by the Link component, and I added a style textDecoration: 'none' not to have the item underlined.

    0 讨论(0)
  • 2020-12-17 09:19

    Starting with Material-UI 1.0, the new syntax is:

    <MenuItem
      component={Link}
      // the 'to' prop (and any other props not recognized by MenuItem itself)
      // will be passed down to the Link component
      to="/profile"
    >
      Profile
    </MenuItem>
    

    (Note: this example doesn't include an icon. There is a new ListItemIcon component for that.)

    0 讨论(0)
  • 2020-12-17 09:26

    The prop linkButton of EnhancedButton is deprecated. LinkButton is no longer required when the href property is provided. It will be removed with v0.16.0.

    <MenuItem onTouchTap={this.handleClose} href="/link/data">Link Item</MenuItem>
    

    Works fine

    0 讨论(0)
  • 2020-12-17 09:27

    onTouchTap doesn't work for me I have to use onClick see the example below

      <MenuItem 
        onClick={this.logout}
        containerElement={<Link to="/" />}
        primaryText="Sign out"
        rightIcon={
          <b style={style.rightIcon}>
            <img
              className="menu-img"
              src="img/app/logout.png"
              alt="logout"
            />
          </b>
        }
      />
    

    hope this will help others as well

    0 讨论(0)
  • 2020-12-17 09:28

    another long overdue update:

    containerElement prop is not supported anymore, use component prop instead.

    Check out the document here.


    2016 December Edit: the linkButton prop is deprecated, you will get a warning:

    Warning: Unknown props `linkButton` on <a> tag.
    

    So simply remove the prop:

    <MenuItem
      containerElement={<Link to="/profile" />}
      primaryText="Profile"
      leftIcon={
        <FontIcon className="material-icons">people</FontIcon>
      }
    />
    

    Here's an Example Repo, and the Live Demo Here.


    Original answer:

    Just wanted to point out that if you're using react-router, you might want to use <Link to="/some/page" /> rather than the <a> tag.

    To do this, you need to use the containerElement prop

    <MenuItem
      linkButton
      containerElement={<Link to="/profile" />}
      primaryText="Profile"
      leftIcon={
        <FontIcon className="material-icons">people</FontIcon>
      }
    />
    

    (the ={true} can be omitted if you're only passing true, in other words, <MenuItem linkButton /> is same as <MenuItem linkButton={true} />)

    The containerElement and linkButton props is actually documented in the buttons section, but you can use it in MenuItem as well.

    0 讨论(0)
提交回复
热议问题