declarations file 만들기
// styled.d.ts
import "styled-components";
declare module "styled-components" {
export interface DefaultTheme {
colors: {
gray_100: string;
gray_200: string;
};
}
}
먼저, 선언 파일을 생성해준다.
그리고 DefaultTheme
에 타입을 추가 해준다.
(+ d.ts파일은 구현부가 아닌 선언부만을 작성하는 용도의 파일로, JS코드로 컴파일되지않음.
선언 코드(declare)만 작성이 가능)
이제,DefaultTheme
는 prop.theme에 적용시켜줄 것이다.
theme 만들기
이제 위에서 선언한 DefaultTheme
을 사용하여 테마를 만들 수 있다.
import { DefaultTheme } from "styled-components";
const theme: DefaultTheme = {
colors: {
gray_100: "#808080",
gray_100: "#949494",
},
};
export default theme;
ThemeProvider 추가
import theme from "./styles/theme";
ReactDOM.render(
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>,
document.getElementById("root")
);
index.tsx
혹은 App.tsx
에서 감싸주자!
Styling components
// in components
import styled from "styled-components";
export const Div = styled.div`
background-color: ${(props) => props.theme.colors.gray_100};
`;
이제 original import 만으로 styled-components를 만들 수 있다!
++ 전역 스타일로 colors를 추가해 줄 수도 있지만 코드길이가 너무길다 ;;
다음 블로그에서는 CSS var()
를 사용해 전역적으로 사용할 color들을 가져와보자
'Front-end > Module' 카테고리의 다른 글
[@react-google-maps/api] Google 지도에 Custom Marker 나타내기 (1) | 2022.09.01 |
---|---|
[Module] Yup & Formik 정리 (0) | 2022.08.23 |
[react-slick] dots css 커스텀하기 (0) | 2022.06.04 |
[Library] Iamport (0) | 2022.03.24 |
[Library] Formik &Yup (2) | 2022.03.07 |