(21.08.04) Material-ui Default theme의 type
도깨비젤리
·2021. 8. 4. 22:31
작은 지식이라도, 하루에 하나씩.
한 줄 요약
🦄import {Theme} from "@material-ui/core/styles🦄
Default Theme
material-ui는 Theme Object를 통한 스타일링을 가능하게 한다. 이 Theme라는 것은 일일이 사용자가 withTheme을 이용해서 직접 만들 수 도 있지만, 기본적으로 Default 값을 제공한다.
얘는 사실 makeStyles()를 호출할 때 첫번째 parameter로 들어가고 있다. 얘를 가져다 쓰려면 params에 임시변수를 넣어주고, theme에 맞는 속성 값들을 꺼내쓰면 되는데, 이 속성 값들이라는게 무지무지 길고 복잡하고 어려운 영어로 범벅이 되어있다. 보나마나 오타로 인한 에러가 다량으로 발생하게 될 것이라는 게 예상되므로, 이 Default Theme의 타입을 불러와서 써주자.
import { makeStyles, Theme } from "@material-ui/core/styles";
... 중략
const useStyles = makeStyles((theme: Theme) => ({
editBtn: {
"& span": {
fontSize: "1rem",
},
[theme.breakpoints.between("xs", "sm")]: {
width: "120px",
height: "48px",
},
[theme.breakpoints.between("sm", "md")]: {
width: "148px",
height: "64px",
},
[theme.breakpoints.between("md", "lg")]: {
width: "164px",
height: "82px",
},
},
theme의 타입을 import한 Theme로 지정해주면 자동으로 오타 체크도 해주고 아주 편하다.
추가로, makeStyles를 사용하면서 nest된 css를 지정하고 싶으면 "& span"과 같이 scss에서 쓰는 문법을 유사하게 적용하면 된다. 클래스 이름까지 적용되는 것으로 아는데, 아직 시험해볼 기회가 없었다. 되지 않을까??? 안되면 내용 보완해서 다시 글 작성해보겠습니다
요즘 material-ui로 프로젝트를 하다보니 포스팅도 죄다 material-ui와 관련된 것이다. 좀 다른 내용도 포스팅 하고 싶은데..빨리 플젝 끝났으면 좋겠다!!
'TIL' 카테고리의 다른 글
(21.09.01) Moment.js (0) | 2021.09.01 |
---|---|
(21.08.31)ES6 Class (0) | 2021.08.31 |
(21.08.02) setInterval 함수 (0) | 2021.08.02 |
(21.08.02) Typescript에서 React Props를 받기 / React에서 배열 랜더링 (0) | 2021.08.02 |
(21.08.01) SweetAlert2 (0) | 2021.08.01 |