styled-components로 theme적용하기 with Typescript

2023. 2. 22. 23:52·TECH

1. styled.d.ts 파일을 만들어서 theme에 들어가는 속성 타입 정의

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

declare module 'styled-components' {
  export interface DefaultTheme {
    textColor: string;
    bgColor: string;
  }
}

 

2. theme.ts 파일 만들고 테마 값 선언

// src/theme.ts
import { DefaultTheme } from "styled-components";

export const lightTheme:DefaultTheme = {
  textColor: '#000',
  bgColor: '#fff'
}

export const darkTheme:DefaultTheme = {
  textColor: '#fff',
  bgColor: '#000'
}

 

3. 최상위 컴포넌트에서 theme-provider로 컴포넌트 감싸고 theme props 내려주기

// src/index.tsx
import { darkTheme, lightTheme } from "./theme";

import App from "./App";
import React from "react";
import ReactDOM from "react-dom/client";
import { ThemeProvider } from "styled-components";

const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
root.render(
  <React.StrictMode>
    <ThemeProvider theme={lightTheme}>
      <App />
    </ThemeProvider>
  </React.StrictMode>
);

 

4. 하위 컴포넌트에서 props.theme로 받아서 사용하면 된다. 

import styled from "styled-components";

const Wrapper = styled.div`
  display: flex;
  width: 100%;
  align-items: center;
  text-align: center;
  height: 500px;
  background-color: ${(props) => props.theme.bgColor};
`;

const Text = styled.span`
  width: 100%;
  flex: 1;
  font-size: 30px;
  color: ${(props) => props.theme.textColor};
`;

const App = () => {
  return (
    <Wrapper>
      <Text>test</Text>
    </Wrapper>
  );
};

export default App;

'TECH' 카테고리의 다른 글

React Hook Form  (0) 2023.03.01
styled-components 전역 스타일링 (Global style)  (0) 2023.02.24
styled-components 기본 문법  (0) 2023.02.22
styled-components, emotion 비교  (0) 2023.02.22
redux-toolkit  (0) 2023.02.20
'TECH' 카테고리의 다른 글
  • React Hook Form
  • styled-components 전역 스타일링 (Global style)
  • styled-components 기본 문법
  • styled-components, emotion 비교
ssund
ssund
  • ssund
    ssund의 기술블로그
    ssund
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • TECH (22)
      • NOTE (40)
      • DAILY (7)
      • javascript (1)
      • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • TECH
    • NOTE
    • DAILY
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    git배포
    타입스크립트
    react state management
    redux
    reduxtoolkit
    함수와 메서드차이
    d.ts
    React
    배열요소순서
    JavaScript
    styled-components
    TypeScript
    웹브라우저구성
    theme-provider
    reat-head
    call signatures
    global-style
    Array.sort()
    커머스프로젝트
    slidesPerGroup
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ssund
styled-components로 theme적용하기 with Typescript
상단으로

티스토리툴바