Material-ui: ListItem์— ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2015๋…„ 08์›” 13์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mui-org/material-ui

Listitem์„ ๋‹ค๋ฅธ URL์— ๋Œ€ํ•œ ๋งํฌ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ Link์˜ ์†์„ฑ์ด ListItem์˜ ์†์„ฑ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ

< ListItem primaryText = { <Link to="a" > as </Link> } />

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

<ListItem button component={Link} to='/some-url'>...</ListItem>

๋ชจ๋“  26 ๋Œ“๊ธ€

@TonyFrancis href ์†์„ฑ์„ ListItem์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@TonyFrancis gitter์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋ฐ›์•˜์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด ์ž‘์—…์„ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๊ณ„์†๋˜๋ฉด ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š”.

href ๋Š” ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:
์  ์žฅ! ์ด ๋ฌธ์ œ๋Š” #2243์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ; ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์†์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ๋ฌธ์„œ์—์„œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์„œํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋‹ค์Œ ์ง„์ˆ ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Other properties (no documented) are applied to the root element.
github List ๊ตฌํ˜„์„ ๋ณด์•˜๊ณ  containerElement ์†์„ฑ์ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@TonyFrancis ์‘๋‹ต์„ ๊ธฐ๋ฐ˜์œผ๋กœ href๊ฐ€ ํ•„์š”๋ฅผ ์™„์ „ํžˆ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. Link ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ถœ์ฒ˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ basename ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด <Router basename='/my-app'> ์•ฑ์„ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฒฝ์šฐ

< ListItem primaryText = { <Link to="a" > as </Link> } />

basename ๋ฅผ ์—ฌ๊ธฐ์ €๊ธฐ ๋“ค๊ณ  ๋‹ค๋‹ ํ•„์š” ์—†์ด my-app/a ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ๊ฐ€ ๋‚˜์—๊ฒŒ ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ 

ListItem์— ๋Œ€ํ•œ ๋ฌธ์„œ์— href ํ•„๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

<ListItem button component={Link} to='/some-url'>...</ListItem>

@mariotacke ^ ์ด ์ฝ”๋“œ๋Š” ์˜๋ฏธ์ƒ ์œ ํšจํ•˜์ง€ ์•Š์€ ul > a ๋งˆํฌ์—…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค( https://github.com/mui-org/material-ui/issues/7956#issuecomment -362433602 ์ฐธ์กฐ).

ํŽธ์ง‘: ๋ถ€๋ชจ๊ฐ€ <nav> ์ด๊ฑฐ๋‚˜ component="nav" ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ์ด๊ฒƒ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```
๊ธฐ๋ณธํ…์ŠคํŠธ="ํ…์ŠคํŠธ"
์ปจํ…Œ์ด๋„ˆ ์š”์†Œ={ }
/>
````

์•ˆ๋…•ํ•˜์„ธ์š” @Glaadis Tnx, ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

๋งˆํฌ์—…์ด ๋‚˜์—๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” @Glaadiss :

Warning: React does not recognize the ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ instead. If you accidentally passed it from a parent component, remove it from the DOM element.

๋‚ด๊ฐ€ React ๋˜๋Š” MUI์˜ ์˜ค๋ž˜๋œ ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

@renannobile ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์—์„œ ๋ถˆํ•„์š”ํ•œ {...props} ๋ฅผ ์ „๋‹ฌ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ฐ€์ด๋“œ์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ ํ”ํžˆ ํ•˜๋Š” ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค :P

@Glaadis 1.0.0-beta.44์—์„œ๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹œํ—˜์„ ๋งˆ์นœ:

<List component="nav">
    <ListItem component={Link} to="/admin/user">
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
      <ListItemText primary="Inbox" />
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>

์œ„์˜ ๊ฒฝ์šฐ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฉฐ div๊ฐ€ ์ž์‹์œผ๋กœ ์žˆ๋Š” a ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.

<List component="nav">
    <ListItem primaryText="Inbox" component={Link} to="/admin/user">
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>

์œ„์˜ ๊ฒฝ์šฐ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฉฐ ๋ˆˆ์— ๋ณด์ด๋Š” ํ…์ŠคํŠธ๊ฐ€ ์—†๋Š” ํ•ญ๋ชฉ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

<List component="nav">
    <ListItem primaryText="Inbox" containerElement={<Link to="/admin/user" />}>
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>

์œ„์˜ ๊ฒฝ์šฐ๋Š” HTML์˜ containerElement์— ๋Œ€ํ•œ [object Object] ์†์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

<List component="nav">
    <ListItem ContainerComponent={() => <Link to="/admin/user" />}>
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
      <ListItemText primary="Inbox" />
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>
<List component="nav">
    <ListItem ContainerComponent={Link to="/admin/user" />}>
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
      <ListItemText primary="Inbox" />
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>



md5-7ff35357efa037d9c88356d4d3bf14ad



<List component="nav">
    <ListItem ContainerComponent={Link} ContainerProps={{ to: '/admin/user' }}>
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
      <ListItemText primary="Inbox" />
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>

์•„! ํ•ด๊ฒฐ์ฑ…์€ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

<List component="nav">
    <ListItem component={Link} to="/admin/user" button>
      <ListItemIcon>
        <PersonIcon />
      </ListItemIcon>
      <ListItemText primary="Inbox" />
    </ListItem>
    <ListItem button>
      <ListItemIcon>
        <DraftsIcon />
      </ListItemIcon>
      <ListItemText primary="Drafts" />
    </ListItem>
  </List>

@mschipperheyn ์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€๋งŒ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์—‰๋ง์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋ฆฌํ”Œ์„ ํฌํ•จํ•˜์—ฌ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

<ListItem button component={
  ({ children, ...props }) =>
    <Link to="/" {...props as LinkProps}>
      {children}
    </Link>
}>

๋‹ค์Œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์›๋ž˜ ์Šคํƒ€์ผ๊ณผ ์œ ์—ฐํ•œ ๋™์ž‘์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

<ListItem component={props => (
  <ListItem button>
    <Link style={{
      position: "absolute",
      top: 0,
      left: 0,
      right: 0,
      bottom: 0
    }}
    to={"/"}>
    </Link>
    {props.children}
  </ListItem>
)}>
    <ListItemIcon>
      <ArrowForwardIcon/>
    </ListItemIcon>
    <ListItemText primary="List Item" />
</ListItem>

Next.js ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ:

<List component="nav">
  <Link href="/admin/resources" passHref>
    <ListItem component="a" button>
      <ListItemIcon>
        <InboxIcon />
      </ListItemIcon>
      <ListItemText primary="Resources" />
    </ListItem>
  </Link>
  ...

์ด๊ฒƒ์€ ๋ช…๋ฐฑํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ <Link/> ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  <a> ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์ฆ‰, ์ž‘์„ฑ ์ค‘์ธ SPA์˜ ์ด์ ์„ ์–ป์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ) ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :

<a href="/yourlink">
  <ListItem
    button
  >
    <ListItemText primary="Your Link Text" />
  </ListItem>
</a>

๊ธฐ๋ณธ์ ์œผ๋กœ Eslint๋Š” rel="noopener noreferrer" ๊ฒฝ์šฐ target="_blank" rel="noopener noreferrer" ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

              <List>
                <a
                  href="https://fb.me/xxxxxxxxx"
                  target="_blank"
                  rel="noopener noreferrer"
                  className={classes.hrefLink}
                >
                  <ListItem button>
                    <ListItemIcon>
                      <ThumbUp className={classes.icon32} />
                    </ListItemIcon>
                    <ListItemText primary="Visit our Facebook Page" secondary="@xxxxxxxxxx" />
                  </ListItem>
                </a>
              </List>

์ด๊ฒƒ์€ v4์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    <ListItem button to={to} component={Link}>
      {children}
    </ListItem>

๋‚ด์žฅ Mui-selected ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<ListItem
  button
  component={NavLink}
  activeClassName={"Mui-selected"}
  to={"/some-url"}
  exact
>
  ...
</ListItem>

ListItem pls์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋งํฌ๋Š” ๋‚˜๋ฅผ ๋„์™€์ฃผ์„ธ์š”

@gautam751 ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ ๋˜๋Š” ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

<ListItem button component={Link} to='/some-url'>...</ListItem>

์ €๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

<ListItem button component={Link} to="/SomePath">
       ...
</ListItem>
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

rbozan picture rbozan  ยท  3์ฝ”๋ฉ˜ํŠธ

ryanflorence picture ryanflorence  ยท  3์ฝ”๋ฉ˜ํŠธ

FranBran picture FranBran  ยท  3์ฝ”๋ฉ˜ํŠธ

mattmiddlesworth picture mattmiddlesworth  ยท  3์ฝ”๋ฉ˜ํŠธ

anthony-dandrea picture anthony-dandrea  ยท  3์ฝ”๋ฉ˜ํŠธ