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)์ด ์๋ค.
์์ ๋ณํ ์์
- ๊ฐ ์์ ์นดํ ๊ณ ๋ฆฌ์ ๋ํ ์์๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์๋ก์ด ์คํ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ ๋ค์ํ ์์์ ๋ฒํผ์ ์ถ๊ฐํ๋ค.
ํฌ๊ธฐ ์กฐ์
- ๋ ํฐ ๋๋ ์์ ๋ฒํผ์
sizeprop์ ํตํด ์กฐ์ ํ ์ ์๋ค. ์์(small), ์ค๊ฐ(medium), ํฐ(large)์ ์ธ ๊ฐ์ง ํฌ๊ธฐ๋ฅผ ์ค์ ํ ์ ์๋ค.
์์ด์ฝ ์ถ๊ฐํ๊ธฐ
- Material UI์๋ ์ฝ 2000๊ฐ์ ์์ด์ฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ค์น ํ ์ฌ์ฉํ ์ ์๋ค.
์์ด์ฝ ๋ฒํผ ์ฌ์ฉ๋ฒ
์์ด์ฝ ๋ฒํผ ์ปดํฌ๋ํธ ์๊ฐ
- MUI๋ ํ
์คํธ ์์ด ์์ด์ฝ๋ง์ผ๋ก ๋ฒํผ์ ๋ง๋ค๊ธฐ ์ํด ์์ด์ฝ ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. JSX์์
IconButton์ ์ํฌํธํ๊ณ , ์ ์ก ์์ด์ฝ์ ์ด ์ปดํฌ๋ํธ๋ก ๊ฐ์๋๋ค.
์ ๊ทผ์ฑ์ ์ํ ์ค์
- ์ ๊ทผ์ฑ ์ด์ ๋ก
aria-label์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ธํ๋ฉด ์์ด์ฝ ๋ฒํผ์ด ํ์๋๋ฉฐ, ์์๊ณผ ํฌ๊ธฐ ์์ฑ์ด ์ ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์์์ 'success', ํฌ๊ธฐ๋ 'small'๋ก ์ค์ ํฉ๋๋ค.
๋ด๋น๊ฒ์ด์ ๋ฐ์์์ ํ์ฉ
- ์์ด์ฝ ๋ฒํผ์ ์ผ๋ฐ ๋ฒํผ๋ณด๋ค ๋ด๋น๊ฒ์ด์ ๋ฐ์ ๋ ์ ํฉํฉ๋๋ค. ์ผ๋ฐ ๋ฒํผ์ ๋๋ฌด ๋๋๋ฌ์ ธ ๋ณด์ผ ์ ์์ต๋๋ค.
๋์์ธ ์์คํ ์ ๋ฐ๋ฅธ ์์ฑ ์กฐ์
- ํ์ฌ ํฌํจ๋ ๋ฒํผ์ ๋์ด๊ฐ ์์ผ๋ฉฐ ๊ทธ๋ฆผ์๊ฐ ์์ต๋๋ค.
disableElevation์์ฑ์ ์ฌ์ฉํ์ฌ ์ด ํจ๊ณผ๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ๋ ๋ฒ์งธ ์ ์ก ๋ฒํผ์ ์ด ์์ฑ์ ์ค์ ํ๋ฉด ์ฐจ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐ ๋ฆฌํ ํจ๊ณผ ๋นํ์ฑํ
- ํด๋ฆญ ์ ๋ฐ์ํ๋ ๋ฆฌํ ํจ๊ณผ๋
disableRipple์์ฑ์ ํตํด ๋นํ์ฑํํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์์ด์ฝ ๋ฒํผ์ ์ด ์์ฑ์ ์ถ๊ฐํ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ธํ๋ฉด ํด๋ฆญ ์ ๋ฆฌํ ํจ๊ณผ๊ฐ ์ฌ๋ผ์ง๋๋ค.