React Material UI Tutorial - 4 - Button

React Material UI Tutorial - 4 - Button

๋ฒ„ํŠผ ์‚ฌ์šฉ๋ฒ• - Material UI์—์„œ MUI ๋ฒ„ํŠผ ์ดํ•ดํ•˜๊ธฐ

MUI ๋ฒ„ํŠผ ์†Œ๊ฐœ

  • ์ด ๋น„๋””์˜ค์—์„œ๋Š” Material UI์˜ ๋ฒ„ํŠผ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์ธ ๋ฒ„ํŠผ ๋ฐ ์•ต์ปค ์š”์†Œ๋ฅผ Material Design์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.
  • MUI ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด import Button from '@mui/material'๋กœ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.

๋ฒ„ํŠผ ๋ณ€ํ˜•

  • ์„ธ ๊ฐ€์ง€ ๋ณ€ํ˜•์ด ์žˆ์œผ๋ฉฐ, ์ฒซ ๋ฒˆ์งธ๋Š” ํ…์ŠคํŠธ ๋ณ€ํ˜•์ด๋‹ค. <Button variant="text">ํ…์ŠคํŠธ</Button> ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ๋Š” ํฌํ•จ๋œ ๋ณ€ํ˜•(contained)์œผ๋กœ, ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ฃผ์˜๋ฅผ ๋Œ์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ: ๋“ฑ๋ก ๋˜๋Š” ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ.
  • ์„ธ ๋ฒˆ์งธ๋Š” ์œค๊ณฝ์„  ๋ณ€ํ˜•(outlined)์œผ๋กœ, ๋ณด์กฐ ์ž‘์—…์— ์ ํ•ฉํ•˜๋‹ค. ์˜ˆ: ์ทจ์†Œ ๋˜๋Š” ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ.

๋ ˆ์ด์•„์›ƒ ์กฐ์ •

  • ํ˜„์žฌ ๋ฒ„ํŠผ ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด ์ข์œผ๋ฏ€๋กœ CSS์—์„œ ํŒจ๋”ฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—ฌ๋ฐฑ์„ ์กฐ์ •ํ•œ๋‹ค.
  • Material UI์—์„œ ์ œ๊ณตํ•˜๋Š” Stack ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์š”์†Œ๋“ค์„ ํ–‰(row) ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•œ๋‹ค.

๋งํฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

  • ํ…์ŠคํŠธ ๋ณ€ํ˜•์˜ ๊ฒฝ์šฐ href ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ์ด๋ฅผ ํ†ตํ•ด ๋ฒ„ํŠผ์ด ๋งํฌ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ: <Button variant="text" href="https://google.com">.

์ƒ‰์ƒ ํŒ”๋ ˆํŠธ

  • MUI์—๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ‰์ƒ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๊ธฐ๋ณธ(primary), ๋ณด์กฐ(secondary), ์˜ค๋ฅ˜(error), ๊ฒฝ๊ณ (warning), ์ •๋ณด(info), ์„ฑ๊ณต(success)์ด ์žˆ๋‹ค.

์ƒ‰์ƒ ๋ณ€ํ˜• ์˜ˆ์‹œ

  • ๊ฐ ์ƒ‰์ƒ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์Šคํƒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ƒ‰์ƒ์˜ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

ํฌ๊ธฐ ์กฐ์ •

  • ๋” ํฐ ๋˜๋Š” ์ž‘์€ ๋ฒ„ํŠผ์€ size prop์„ ํ†ตํ•ด ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์€(small), ์ค‘๊ฐ„(medium), ํฐ(large)์˜ ์„ธ ๊ฐ€์ง€ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„์ด์ฝ˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

  • Material UI์—๋Š” ์•ฝ 2000๊ฐœ์˜ ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ์„ค์น˜ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„์ด์ฝ˜ ๋ฒ„ํŠผ ์‚ฌ์šฉ๋ฒ•

์•„์ด์ฝ˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ์†Œ๊ฐœ

  • MUI๋Š” ํ…์ŠคํŠธ ์—†์ด ์•„์ด์ฝ˜๋งŒ์œผ๋กœ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„์ด์ฝ˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. JSX์—์„œ IconButton์„ ์ž„ํฌํŠธํ•˜๊ณ , ์ „์†ก ์•„์ด์ฝ˜์„ ์ด ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ์Œ‰๋‹ˆ๋‹ค.

์ ‘๊ทผ์„ฑ์„ ์œ„ํ•œ ์„ค์ •

  • ์ ‘๊ทผ์„ฑ ์ด์œ ๋กœ aria-label์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ™•์ธํ•˜๋ฉด ์•„์ด์ฝ˜ ๋ฒ„ํŠผ์ด ํ‘œ์‹œ๋˜๋ฉฐ, ์ƒ‰์ƒ๊ณผ ํฌ๊ธฐ ์†์„ฑ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒ‰์ƒ์€ 'success', ํฌ๊ธฐ๋Š” 'small'๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”์—์„œ์˜ ํ™œ์šฉ

  • ์•„์ด์ฝ˜ ๋ฒ„ํŠผ์€ ์ผ๋ฐ˜ ๋ฒ„ํŠผ๋ณด๋‹ค ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฒ„ํŠผ์€ ๋„ˆ๋ฌด ๋‘๋“œ๋Ÿฌ์ ธ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ž์ธ ์‹œ์Šคํ…œ์— ๋”ฐ๋ฅธ ์†์„ฑ ์กฐ์ •

  • ํ˜„์žฌ ํฌํ•จ๋œ ๋ฒ„ํŠผ์€ ๋†’์ด๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ๋ฆผ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. disableElevation ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํšจ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ „์†ก ๋ฒ„ํŠผ์— ์ด ์†์„ฑ์„ ์„ค์ •ํ•˜๋ฉด ์ฐจ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ๋ฆฌํ”Œ ํšจ๊ณผ ๋น„ํ™œ์„ฑํ™”

  • ํด๋ฆญ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฆฌํ”Œ ํšจ๊ณผ๋Š” disableRipple ์†์„ฑ์„ ํ†ตํ•ด ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์•„์ด์ฝ˜ ๋ฒ„ํŠผ์— ์ด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ™•์ธํ•˜๋ฉด ํด๋ฆญ ์‹œ ๋ฆฌํ”Œ ํšจ๊ณผ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
Video description

๐Ÿ“˜ Courses - https://learn.codevolution.dev/ ๐Ÿ’– Support - https://www.paypal.me/Codevolution ๐Ÿ’พ Github - https://github.com/gopinav โšก๏ธ Checkout Retool! https://retool.com/ ๐Ÿ“ฑ Follow Codevolution + Twitter - https://twitter.com/CodevolutionWeb + Facebook - https://www.facebook.com/codevolutionweb ๐Ÿ“ซ Business - codevolution.business@gmail.com React Material UI Tutorial React MUI Tutorial on Button