μλ
νμΈμ, λ©λ΄ νλͺ©μ νμ¬ κ΅¬νμ λ³΄κ³ μμκ³ μ€μ λ§ν¬(html <a>
νκ·Έλ₯Ό μλ―Έ)κ° μλ€λ κ²μ μμμ΅λλ€. κ²°κ³Όμ μΌλ‘ μλ₯Ό λ€μ΄ νμ λͺ¨μμλ μ€μ λ§ν¬κ° μμΌλ©° λ€λ₯Έ νμ΄μ§λ‘μ μ νμ onclick μ΄λ²€νΈλ₯Ό ν΅ν΄ κ΄λ¦¬λ©λλ€.
νΉν μλ² μΈ‘ λ λλ§ νμ΄μ§λ₯Ό κ³ λ €ν λ λ§ν¬κ° μμΌλ©΄ κ°μ λ κ²μ΄λΌκ³ μκ°ν©λλ€.
μ΄κ²μ΄ λ§μ΄ λλ€κ³ μκ°ν©λκΉ, μλλ©΄ μ΄ λ°©ν₯μΌλ‘ κ°μ§ λ§μμΌ ν νΉλ³ν μ΄μ κ° μμ΅λκΉ?
μ λ μ΄κ² κΆκΈν©λλ€. λ΄ μμ© νλ‘κ·Έλ¨μμ μλ² μΈ‘ λ λλ§μ μ¬μ©νκ³ μμ΅λλ€. μ΄κ²μ μ‘°μ¬ν΄μΌ ν μ¬νμ λλ€.
href
μμ±μ΄ μλ μ΅μ»€ μμλ₯Ό μ¬μ©νλ©΄ μ κ·Όμ±μ΄ ν₯μλκ³ μ¬λλ€μ΄ μ΅μν λΈλΌμ°μ λμμ μ¬μ©ν μ μμ΅λλ€(μ: μ νμμ μ΄λ €λ©΄ β ν΄λ¦).
+1
+1
+1
+1
+1
+1
+1
@ecesena μ΄κ²μ΄ μ¬μ ν μλ‘μ΄ MenuItem
κ΅¬μ± μμμ λ¬Έμ λΌκ³ μκ°νμλκΉ? μ¬κΈ°λ₯Ό μ°Έμ‘° MenuItem
sλ <a>..</a>
λ‘ λλ¬μ μ μμ΅λλ€. μλμ?
μ΄κ²μ @shaurya947μ΄ μ μν κ²μΌλ‘ κ°λ₯ν©λλ€.
λ€μκ³Ό κ°μ΄ LeftNavμμ 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>
)
<MenuItem>
νκ·Έ μ£Όμμ <a>
κ°μΈλ©΄ κ²½κ³ validateDOMNesting(...): <a> cannot appear as a descendant of <a>. See MainLayout > a > ... > MenuItem > ListItem > EnhancedButton > a"
μΆλ ₯μ λν΄ React κ²μ¬λ₯Ό μννλ©΄ λ€μμ μ»μ΅λλ€.
<a href="/">
<MenuItem..>
<ListItem..>
<div>
<EnhancedButton..>
<a>
<TouchRipple ..>
</a>
</EnhancedButton>
</div>
</ListItem>
</MenuItem>
</a>
<a>
μμλ₯Ό μ€μ²©νλ κ²μ λΆμΎν©λλ€.
<MenuItems>
λ Button μ μΈ λ΄μμ <a>
μμλ₯Ό μμ±ν©λλ€. μμ±λ <EnhancedButton>
λ΄μμ href μμ±μ μ±μ°κΈ° μν΄ MenuItem
μμ μ΄λ€ μνμ΄ μ¬μ©λ©λκΉ?
MenuItem κ°μ²΄λ₯Ό LeftNavμ μνμΌλ‘ μ¬μ©νλ©΄ μ°κ²°μ΄ μλνμ§λ§ μ΄ λ°©λ²μΌλ‘ μΌμͺ½/μ€λ₯Έμͺ½ μμ΄μ½μ μΆκ°νλ λ°©λ²μ μ μ μμμ΅λλ€.
μ¦:
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}
/>
μ΄κ²μ λ³λμ λ¬Έμ μ΄λ―λ‘ νλλ₯Ό μ΄μ΄μ λ μ΄λΈμ μ§μ νκ³ λ§μΌμ€ν€μ μΆκ°ν μ μλλ‘ νμμμ€. tnx :grin:
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λ 12μ(λ§€μ° μ΅κ·Ό)μ λν stackoverflow μ λ°μ΄νΈλ λ΅λ³μ 보μκ³ μ΄κ²μ΄ Drawer λ΄μ MenuItemμ λν΄ μλνλμ§ μκ³ μλμ§ κΆκΈν©λλ€. λλ μλμμ λ€μμ μλνκ³ μμΌλ©° containerElementκ° μ무 κ²λ νμ§ μλ κ² κ°κΈ° λλ¬Έμ Linkκ° MenuItemκ³Ό ν¨κ» μλνλλ‘ ν μ μμμ΅λλ€.
<Drawer
docked={false}
width={300}
onRequestChange={this.closeDrawer}
open={this.state.open}>
<AppBar title="Title"
/>
<MenuItem primaryText="home" containerElement={<Link to="/home" />} />
</Drawer>
containerElementλ μλνμ§λ§ λ¬Έμνλμ§ μμμΌλ―λ‘ νμ¬λ‘μλ μ΄ μ€λ λκ° κ³΅μ λ¬Έμ μν μ ν΄μΌ ν κ² κ°μ΅λλ€. κ°μ¬ ν΄μ!
μλ νμΈμ @Faolainλ !
λ΅λ³μ΄ λ¦μ΄ μ λ§ μ£μ‘ν©λλ€...
create-react-app
λ₯Ό μ¬μ©νμ¬ κΉ¨λν μ±μμ μ½λ©μ μλνμ§λ§ λͺ¨λ κ²μ΄ μ λλ‘ μλνλ κ² κ°μμ΅λκΉ?!
react-router
λ€λ₯΄κ² ꡬμ±νκ±°λ λ²μ μ΄ λ€λ₯Έκ°μ?
μ΄μ¨λ , μ¬κΈ°μ μμ Repo κ° μκ³ μ¬κΈ°μ λΌμ΄λΈ λ°λͺ¨κ° μμ΅λλ€.
μ¬μ ν λ¬Έμ μ μμΈμ μ°Ύμ μ μλ€λ©΄ μ¬νν μν 리ν¬μ§ν 리λ₯Ό μ 곡ν μ μμ΅λκΉ?
μμ μ루μ
μ€ μ΄λ κ²λ Safari λ° iOSμμ μλνμ§ μμμ΅λλ€. react-router
λν ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
<MenuItem
onTouchTap={() => {
this._yourMethod()
browserHistory.push('/howItWorks')
}}
primaryText="Menu Link"
/>
@janzenz λ μ΄ μκ° κ·νμ λΈλΌμ°μ μμ μλνμ§ μμ΅λκΉ?
macOSμ Safariμ iOSμ Safariμμ μλνλλ° λͺ¨λ μλν©λλ€. μ΄κ²μ λΉμ μ μν΄ μλνμ§ μμ΅λκΉ?
ν΄κ²° λ°©λ²μ΄ μλνλλΌλ SEOκ° λλΉ μ§ μ μμΌλ©° λ§ν¬ 미리보기 λ° μ νμμ μ΄κΈ° μ΅μ ν΄λ¦κ³Ό κ°μ μΌλΆ κΈ°λ³Έ λμμ μκ² λ©λλ€.
@DaxChen ν΅μ°°λ ₯μ κ°μ¬λ립λλ€. μ λ¬Έμ κ° κ·νμ 첫 λ²μ§Έ λ§ν¬μ κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ΅λλ€. λλ μ΄λ―Έ λ λ²μ§Έ κ²μ μλνμ§λ§ onTouchTap
μνμ μΆκ°νλ©΄ <Link />
λ μ΄μ μλνμ§ μμ΅λλ€.
@janzenz μ΄μ μμ μμ onTouchTap
μν μ μΆκ°νλλ° μ¬μ ν μλν©λλ€.
μ€μ μ΄ μ΄λκ° λ€λ₯Έμ§ λͺ¨λ₯΄κ² λ€μ... π’
μ
λ°μ΄νΈλ μ½λ λ₯Ό νμΈνκ³ μλνλμ§ νμΈν μ μμ΅λκΉ?
@DaxChen material-ui
λ²μ μμ ~0.16.0
. μ΅μ ~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/hhimanshu/spicyveggie/commit/844b7b7cddf9102995cd2680a783df3b6ef485μ
λλ€ . λκ΅°κ° λμμ£ΌμΈμ?
@hhimanshu μ΄ μ€ μ λ€μμΌλ‘ λ³κ²½ν©λλ€.
import { Link } from 'react-router-dom'
@DaxChen , κ°μ¬ν©λλ€. κ·Έκ±°μλ€. κ·Έλ¬λ λ΄ νμ΄μ§κ° {<Link to="/menu"/>}
λ‘ λ‘λλλ κ²½μ°κ° μλλΌ μ 체 νμ΄μ§κ° λ‘λλκ³ λ΄ Drawer
λ μ¬λΌμ§λλ€.
@hhimanshu \menu
route μμ Menu
κ΅¬μ± μμλ§ μ¬μ© νκΈ° λλ¬Έμ App
κ° λ λλ§λμ§ μμ΅λλ€.
Menu
λ° Summary
λ₯Ό App
λλ μΌλΆ λ μ΄μμ κ΅¬μ± μμ μμ μ€μ²©νκ³ κ°κ°μ μμμ μ λ¬ν©λλ€.
react-devtoolsλ₯Ό μ¬μ©νμ¬ λ λλ§λ κ΅¬μ± μμ κ³μΈ΅ ꡬ쑰μ ν΄λΉ μνλ₯Ό νμΈν μ μμ΅λλ€!
μ΄κ²μ material-uiμ κ΄λ ¨μ΄ μμ΅λλ€. react-routerμ tutorials/docsμμ μμΈν μ½μ΄λ³΄μΈμ.
@DaxChen κ°μ¬ https://github.com/hhimanshu/spicyveggie/blob/master/src/index.js#L20μΌλ‘ ν΄κ²°νμ΅λλ€.
+1
React Routerμμ HANDLED λ° NOT HANDLED λ§ν¬μ λν ν΄κ²° λ°©λ².
λμ λ§ν¬κ° React Routerμ μν΄ μ²λ¦¬λλ κ²½μ°
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>
λμ λ§ν¬κ° React Routerμ μν΄ μ²λ¦¬λμ§ μλ κ²½μ°, μ¦: μμ²μ΄ API μλ² λλ 무μμ΄λ μ λ¬λ©λλ€.
μ¨ν΄λ¦ κΈ°λ₯:
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 μ€ν). react-router-dom
<Link>
μ λ©λ΄ μν μ νλ €λ©΄ <Select>
κ° νμνμ΅λλ€. κ° λ§ν¬λ μΈμ΄ μ€μ μ ν΄λΉνλ―λ‘ λλ‘λ€μ΄μ 쿼리 맀κ°λ³μμ νμ¬ μΈμ΄ κ°μ νμν©λλ€.
<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>
μ΄κ²μ μ΅μνμ TypeScript μΊμ€ν μ΄ νμνκ³ Material UIμ μΌκ΄λ λΉμ£ΌμΌμ μ μ§νλ κ°μ₯ κΉ¨λν μ루μ μ΄μμ΅λλ€.
@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>
MenuItem
λ λλ¬μλλ€.
<MenuList>
<li>
<MenuItem
component="a"
href="https://google.com"
target="_blank"
>Google</MenuItem>
</li>
</MenuList>
κ·Έλ¬λ©΄ λ€μ HTMLμ΄ μμ±λ©λλ€.
<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>
νμ λ©λ΄κ° μκ³ μ¬μ©νλ€κ³ κ°μ ν©λλ€.
'react-router-dom'μμ { λ§ν¬ } κ°μ Έμ€κΈ°;
'@material-ui/core/MenuItem'μμ MenuItem κ°μ Έμ€κΈ°;
\
λ§ν¬λ /your-path νμ΄μ§λ₯Ό λΆλ¬μ΅λλ€. νμ λ©λ΄λ₯Ό μ΄λ»κ² λ«μκΉμ?
κ°μ₯ μ μ©ν λκΈ
containerElement
μνμ μ¬μ©νμΈμ!보λ€:
http://stackoverflow.com/questions/32106513/material-ui-menu-using-routes/34507786#34507786