Material-ui: [рдореЗрдиреВ рдЖрдЗрдЯрдо] рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рднреАрддрд░ рд▓рд┐рдВрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬрдире░ 2015  ┬╖  43рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mui-org/material-ui

рдирдорд╕реНрддреЗ, рдореИрдВ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ (рдЕрд░реНрдерд╛рдд, html <a> рдЯреИрдЧ)ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдореЗрдВ рднреА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕рдВрдХреНрд░рдордг рдСрдирдХреНрд▓рд┐рдХ рдИрд╡реЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХ рд╣реЛрдиреЗ рд╕реЗ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкреНрд░рд╕реНрддреБрдд рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рди рдЬрд╛рдиреЗ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рд╣реИрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

containerElement рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!

рджреЗрдЦреЛ:
http://stackoverflow.com/questions/32106513/material-ui-menu-using-routes/34507786#34507786

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

рд╕рднреА 43 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

href рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдПрдВрдХрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣реБрдВрдЪ рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реЗрдЧреА рдЬрд┐рд╕рдХреЗ рд╡реЗ рдЖрджреА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП тМШ-рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред

+1

+1

+1

+1

+1

+1

+1

@ecesena рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдирдП MenuItem рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛? рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред MenuItem s <a>..</a> рдШрд┐рд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдирд╣реАрдВ?

@shaurya947 рдиреЗ рдЬреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛,

рдореИрдВ рдЕрдкрдиреЗ рд╡рд╛рдордиреЗрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ MenuItems рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

        let menuItems = (
            <div>
                <MenuItem primaryText="Doors"           leftIcon={<FontIcon className="material-icons" color={GlobalStyles.default.activeColor}>home</FontIcon>} /></a>
                <MenuItem primaryText="Load"           leftIcon={<FontIcon className="material-icons" color={GlobalStyles.default.activeColor}>home</FontIcon>} />
                <MenuItem primaryText="Notes"           leftIcon={<FontIcon className="material-icons" color={GlobalStyles.default.activeColor}>home</FontIcon>} />
                <MenuItem primaryText="Alerts"          leftIcon={<FontIcon className="material-icons" color={GlobalStyles.default.activeColor}>home</FontIcon>} />
                <MenuItem primaryText="Admin"           leftIcon={<FontIcon className="material-icons" color={GlobalStyles.default.activeColor}>home</FontIcon>} />
            </div>
        );

        return (
            <LeftNav
                ref="leftNav"
                docked={false}
                onChange={this._onLeftNavChange}
            >
                {menuItems}
            </LeftNav>
        )

рд░реИрдкрд┐рдВрдЧ рдПрдХ <a> рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ <MenuItem> рдЯреИрдЧ рдлреЗрдВрдХрддрд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА validateDOMNesting(...): <a> cannot appear as a descendant of <a>. See MainLayout > a > ... > MenuItem > ListItem > EnhancedButton > a"

рдпрджрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд░рд┐рдПрдХреНрдЯ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВред

<a href="/">
    <MenuItem..>
        <ListItem..>
            <div>
                <EnhancedButton..>
                    <a>
                        <TouchRipple ..>
                    </a>
                </EnhancedButton>
            </div>
        </ListItem>
    </MenuItem>
</a>

рдЬрд┐рд╕рдореЗрдВ <a> рддрддреНрд╡реЛрдВ рдиреЗрд╕реНрдЯреЗрдб рд╣реЛрдирд╛ рдЖрдкрддреНрддрд┐рдЬрдирдХ рд╣реИред

<MenuItems> рдмрдЯрди рдШреЛрд╖рдгрд╛ рдХреЗ рднреАрддрд░ <a> рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рдЙрддреНрдкрдиреНрди <EnhancedButton> рднреАрддрд░ href рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MenuItem рд╕реЗ рдХрд┐рд╕ рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рд▓реЗрдлреНрдЯрдирд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрдиреНрдпреВрдЗрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛рд░реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдмрд╛рдПрдВ/рджрд╛рдПрдВ рдЖрдЗрдХрди рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВред

рдЕрд░реНрдерд╛рдд:

let menuItems = [
         { route: '/load_areas/'+ this.state.area + '/doors', text: 'Doors' },
         { route: '/load_areas/'+ this.state.area + '/trailer_loads', text: 'Load' },
         { route: 'notes', text: 'Notes' },
         { route: 'alerts', text: 'Alerts' },
         { route: 'admin', text: 'Admin' }
         ];

<LeftNav
                ref="leftNav"
                docked={false}
                menuItems={menuItems}
                onChange={this._onLeftNavChange}
            />

рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд▓реЗрдмрд▓ рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдЗрд╕реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХреЗрдВ, рдЯреАрдПрдирдПрдХреНрд╕: рдЧреНрд░рд┐рди:

containerElement рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!

рджреЗрдЦреЛ:
http://stackoverflow.com/questions/32106513/material-ui-menu-using-routes/34507786#34507786

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

рдЕрдм linkButton рдХреЗ рдкреНрд░реЛрдк EnhancedButton рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм href рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ рддреЛ LinkButton рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ v0.16.0 рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<MenuItem primaryText="Primary Text" href="/your/link" />

href рдкреБрдирдГ рд▓реЛрдб рдкреГрд╖реНрдаред рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд░ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ

@cezarneaga рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ href="#/your/link"

<MenuItem
  containerElement={<Link to="/profile" />}
.../>

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ linkButton рднреА рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@DaxChen рдореИрдВрдиреЗ рджрд┐рд╕рдВрдмрд░ 2016 (рдЕрддреНрдпрдВрдд рд╣рд╛рд▓рд┐рдпрд╛ рд╣рд╛рд╣рд╛) рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛

<Drawer
  docked={false}
  width={300}
  onRequestChange={this.closeDrawer}
  open={this.state.open}>
  <AppBar title="Title"
 />
  <MenuItem primaryText="home" containerElement={<Link to="/home" />} />
</Drawer>

рдХрдВрдЯреЗрдирд░ рдПрд▓рд┐рдореЗрдВрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рдп @ рдлрд╛рдУрд▓реЗрди !

рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреЗрдж рд╣реИ ...
рдореИрдВрдиреЗ рдЖрдкрдХреЛ create-react-app рд╕рд╛рде рдПрдХ рд╕рд╛рдл рдРрдк рдкрд░ рдХреЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ ?!
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ react-router рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реЛ, рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрд▓рдЧ рд╣реИ?

рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд░реЗрдкреЛ рдФрд░ рдпрд╣рд╛рдВ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рд╣реИ ред

рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рд░реЗрдкреЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдиреЗ рд╕рдлрд╛рд░реА рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рддреЛ рдпрд╣рд╛рдБ рдореИрдВрдиреЗ react-router рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ

          <MenuItem
            onTouchTap={() => {
              this._yourMethod()
              browserHistory.push('/howItWorks')
            }}
            primaryText="Menu Link"
          />

@janzenz рдХреНрдпрд╛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕реЗ рдореИрдХрдУрдПрд╕ рдкрд░ рд╕рдлрд╛рд░реА рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рд╕рдлрд╛рд░реА рдореЗрдВ рдЖрдЬрдорд╛рдпрд╛ рдФрд░ рд╡реЗ рд╕рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдпрджреНрдпрдкрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЦрд░рд╛рдм рдПрд╕рдИрдУ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдХреБрдЫ рдореВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ-рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдФрд░ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк-рдХреНрд▓рд┐рдХ рдЦреЛ рджреЗрдВрдЧреЗред

@DaxChen рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреЗ рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ onTouchTap рдкреНрд░реЛрдк рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ <Link /> рдЕрдм рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@janzenz рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ onTouchTap рдкреНрд░реЛрдк рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкрддрд╛ рдирд╣реАрдВ рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХрд╣реАрдВ рдЕрд▓рдЧ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░...
рдЖрдк рдЕрджреНрдпрддрди рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

@DaxChen рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдВрд╕реНрдХрд░рдг ~0.16.0 рдкрд░ material-ui рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдирд╡реАрдирддрдо ~0.17.0 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ?

@janzenz рдореИрдВ рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдмрд╕ рдирд╡реАрдирддрдо 0.17.4 рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдЯрдЪ! рд╢рд╛рдпрдж рддрдм рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдкред рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ @DaxChen рдореИрдВ рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рдпрджрд┐ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рдЧрдИ рд╣реИред

@DaxChen , рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of `EnhancedButton`.
    at invariant (invariant.js:44)
    at ReactCompositeComponentWrapper.instantiateReactComponent [as _instantiateReactComponent] (instantiateReactComponent.js:74)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:367)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:238)
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:697)
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:516)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:238)
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:697)
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:516)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:238)
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:697)
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:516)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:238)
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:697)
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:516)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371)
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258)
    at Object.mountComponent (ReactReconciler.js:46)
    at mountComponentIntoNode (ReactMount.js:104)
    at ReactReconcileTransaction.perform (Transaction.js:140)
    at batchedMountComponentIntoNode (ReactMount.js:126)
    at ReactDefaultBatchingStrategyTransaction.perform (Transaction.js:140)
    at Object.batchedUpdates (ReactDefaultBatchingStrategy.js:62)
    at Object.batchedUpdates (ReactUpdates.js:97)
    at Object._renderNewRootComponent (ReactMount.js:320)
    at Object._renderSubtreeIntoContainer (ReactMount.js:401)
    at Object.render (ReactMount.js:422)
    at Object.<anonymous> (index.js:36)
    at __webpack_require__ (bootstrap e3e2367тАж:555)
    at fn (bootstrap e3e2367тАж:86)
    at Object.<anonymous> (bootstrap e3e2367тАж:578)
    at __webpack_require__ (bootstrap e3e2367тАж:555)
    at bootstrap e3e2367тАж:578
    at bootstrap e3e2367тАж:578

рдореЗрд░рд╛ рдХреЛрдб https://github.com/hhimanshu/spicyveggie/tree/cards ( cards рд╢рд╛рдЦрд╛) рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

@janzenz
рдореИрдВрдиреЗ browserHistory.push('/howItWorks') рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ import browserHistory from 'react-router-dom' рдЖрдпрд╛рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди undefuned ред

@ рдУрдбреБрдЗрдЧ ,
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА #/your/link , рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдХрд╣реАрдВ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛
рдореИрдВрдиреЗ /your/link рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ Drawer рд╕реЗ Material-UI Drawer рдЦреЛ рджреЗрддрд╛ рд╣реВрдВ

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЪреАрдЬ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрдИред рдореЗрд░рд╛ рдХреЛрдб https://github.com/hhimanshu/spicyveggie/tree/cards ( cards рд╢рд╛рдЦрд╛) рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ https://github.com/hhimanhu/spicyveggie/commit/844b7b7cddf9102995cd2680a783df3b6ef48537 рд╣реИ , рдХреЛрдИ рдХреГрдкрдпрд╛ рдорджрдж рдХрд░реЗрдВ?

@рд╣рд┐рдорд╛рдВрд╢реБ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓ рджреЗрдВ

import { Link } from 'react-router-dom'

рдПрдордбреАрдПрди рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА

@DaxChen , рдзрдиреНрдпрд╡рд╛рджред рд╡рд╣ рдпрд╣ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдореЗрд░рд╛ рдкреГрд╖реНрда {<Link to="/menu"/>} рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░рд╛ Drawer рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

screen shot 2017-04-24 at 1 54 23 pm

@рд╣рд┐рдорд╛рдВрд╢реБ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ \menu рдорд╛рд░реНрдЧ рдореЗрдВ рдХреЗрд╡рд▓ Menu рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП App рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдкрдиреЗ Menu рдФрд░ Summary рдХреЛ App рдпрд╛ рдХреБрдЫ рд▓реЗрдЖрдЙрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдПрдВ, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред

рдЖрдк рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╡рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдпрд╣ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

рдзрдиреНрдпрд╡рд╛рдж @DaxChen , рдореИрдВрдиреЗ рдЗрд╕реЗ https://github.com/hhimanshu/spicyveggie/blob/master/src/index.js#L20 рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛

+1

рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЙрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╣реИрдВрдбрд▓ рдХрд┐рдП рдЧрдП рдФрд░ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдиред


рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд▓рд┐рдВрдХ рдХреЛ рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЙрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

MenuItemLink.js

import React from 'react';
import { MenuItem } from 'material-ui/Menu';
import { Route } from 'react-router-dom';

class MenuItemLink extends React.Component {
  render() {
    const {
      to, also,
      ...rest
    } = this.props;

    return (
      <Route
        render={({ history, location }) => (
          <MenuItem
            onClick={() => {
              history.push(to);
              if (typeof also === 'function') {
                also();
              }
            }}
            {...rest}
          />
        )}
      />
    );
  }
}
MenuItemLink.muiName = 'MenuItem';
export default MenuItemLink;

рдирдореВрдирд╛ рдХреЛрдб:

import MenuItemLink from './MenuItemLink';
<Menu ... >
        <MenuItemLink to="/users"
          also={this.handleRequestClose}>Users</MenuItemLink>
</Menu>

рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд▓рд┐рдВрдХ рдХреЛ рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЙрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд: рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдСрдирдХреНрд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди:

    function facebookLoginRedirect () {
      if (window) window.location.href = "/api/auth/facebook"
      return true;
    }

рдирдореВрдирд╛ рдХреЛрдб:

<MenuItem onClick={ facebookLoginRedirect }>Login with Facebook</MenuItem>

рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдиреЗ рднреА рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рд╣реИред

V3.4 рдкрд░, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import { Link } from 'react-router-dom';
import MenuItem from '@material-ui/core/MenuItem';

...

<MenuItem component={Link} to="/your-path">...</MenuItem>

рдореЗрдиреВ рд▓реЗрдЖрдЙрдЯ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдерд╛:
```рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рд╕реВрдЪрдирд╛рдПрдВ



рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓


рдореЗрдиреВ рд▓реЗрдЖрдЙрдЯ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдерд╛:

<MenuList>
  <Link to='/your-path' style={{ textDecoration: 'none' }}>
    <MenuItem>
      Notifications
     </MenuItem>
  </Link>
  <Link to='/your-path' style={{ textDecoration: 'none' }}>
    <MenuItem>
      Profile
     </MenuItem>
  </Link>
</MenuList>

@eladlevy рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рд╢рдмреНрджрд╛рд░реНрде HTML рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред

<ul>
  <a><li/></a>
  <a><li/></a>
</ul>

рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝рдХрд░ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ (v3.9.0 рдЪрд▓ рд░рд╣рд╛ рд╣реИ)ред рдореИрдВ рдПрдХ рдХреА рдЬрд░реВрд░рдд <Select> рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП react-router-dom <Link> рдПрд╕ред рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдВрдХ рдПрдХ рднрд╛рд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдХрд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

<Select value={currentLanguage}>
  {languages.map(language => (
    <ListItem
      button
      component={btnProps => (
        <Link
          to={ `/things?lang=${ language }` }
          {...btnProps as any}
        />
      )}
      value={language}
      key={language}
    >
      {language}
    </ListItem>
  ))}
</Select>

рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╛ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдиреНрдпреВрдирддрдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рд╕рд╛рдордЧреНрд░реА рдпреВрдЖрдИ рдХреЗ рдЕрдиреБрд░реВрдк рджреГрд╢реНрдп рдмрдирд╛рдП рд░рдЦрд╛ред

@goyney рдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдиреЗ рднреА рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рд╣реИред

V3.4 рдкрд░, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import { Link } from 'react-router-dom';
import MenuItem from '@material-ui/core/MenuItem';

...

<MenuItem component={Link} to="/your-path">...</MenuItem>

рдХрд╛рд░реНрдп рдФрд░ рд╕реНрд╡рдЪреНрдЫ рд╕рдорд╛рдзрд╛рди, рдзрдиреНрдпрд╡рд╛рдж тЭдя╕П

рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЖрдк component="a" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди MenuItem рдХреЛ <li> :

<MenuList>
    <li>
        <MenuItem
            component="a"
            href="https://google.com"
            target="_blank"
        >Google</MenuItem>
    </li>
</MenuList>

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдЪрдЯреАрдПрдордПрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

<ul class="MuiList-root MuiList-padding" role="menu" tabindex="-1">
    <li>
        <a class="[...]" tabindex="-1" aria-disabled="false" role="menuitem" href="https://google.com" target="_blank">Google</a>
    </li>
</ul>

рдорд╛рди рд▓реАрдЬрд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдкреЙрдкрдЕрдк рдореЗрдиреВ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

'рд░рд┐рдПрдХреНрдЯ-рд░рд╛рдЙрдЯрд░-рдбреЛрдо' рд╕реЗ рдЖрдпрд╛рдд {рд▓рд┐рдВрдХ};
'@ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ/рдХреЛрд░/рдореЗрдиреВрдЗрдЯрдо' рд╕реЗ рдореЗрдиреВ рдЖрдЗрдЯрдо рдЖрдпрд╛рдд рдХрд░реЗрдВ;

\\

рд▓рд┐рдВрдХ /рдЖрдкрдХрд╛-рдкрде рдкреГрд╖реНрда рд▓рд╛рдПрдЧрд╛, рдХреЛрдИ рдкреЙрдкрдЕрдк рдореЗрдиреВ рдХреЛ рдХреИрд╕реЗ рдмрдВрдж рдХрд░реЗрдЧрд╛?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕