React

Styled-Components 테마 적용하기

Kir93 2021. 7. 30. 19:37
728x90

 

npm install styled-components
만약 TS를 사용한다면 추가적으로 Types를 설치해 준다.
// react
npm install @types/styled-components

// react-native
npm install @types/styled-components @types/styled-components-react-native

아래부터는 TS로 설명하겠습니다.
TS를 사용하지 않는다면 declare파일만 만들어 주지 않으면 큰 차이가 존재하지 않습니다.

// styled.d.ts
import 'styled-components';

declare module 'styled-components' {
  export interface DefaultTheme {
    main: string;
    disabled: string;
  }
}

//theme.ts
import { DefaultTheme } from 'styled-components/native';

const CustomTheme: DefaultTheme = {
  main: '#226bef',
  disabled: '#bfbfbf',
};

export default CustomTheme;

만약 theme.d.ts파일에서 parse에러가 나온다면 .eslintignore파일을 만들어 예외처리를 해주면 됩니다.

import React from 'react';
import { ThemeProvider } from 'styled-components/native';

import CustomTheme from '@styles/theme';

export default function App(): React.ReactElement {
  ...
  return (
    <ThemeProvider theme={CustomTheme}>
     ...
    </ThemeProvider>
  );
};

ThemeProvider로 전체를 감싸주면 그 이후로는 아래와 같이 미리 선언한 변수를 사용할 수 있다.

export const ButtonText = styled.span`
  font-size: 16px;
  font-weight: 500;
  margin-right: 27px;
  color: ${({theme}) => theme.main};
`;