본문 바로가기

programming study/React

Styled Components(3)

본 내용은 Nomad Coders - React JS 마스터클래스 강의를 토대로 작성하였습니다.

Themes

  • 모든 색상을 가지고 있는 object
  • 프로젝트에 일관성 있는 스타일을 정의할 수 있음
  • 라이트모드/다크모드를 도입할 수 있음

Themes 주입

  • 가장 상위의 컴포넌트에서 테마를 주입하기
  • styled-components의 ThemeProvider를 import
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { ThemeProvider } from 'styled-components';
​
// 색상을 가지고 있는 object
const theme = {
 textColor: "whiteSmoke",
 backgroundColor: "#111"
};
​
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
 <React.StrictMode>
   <!-- theme 주입 -->
   <ThemeProvider theme={theme}>
     <App />
   </ThemeProvider>
 </React.StrictMode>
);

Themes 사용

  • 주입된 theme는 각 styled-component에서 props로 접근 가능
import styled, {keyframes} from 'styled-components';
​
const Text = styled.span`
 color: ${(props) => props.theme.textColor}
font-size: 32px;
`;
​
const Square = styled.div`
display: flex;
justify-content: center;
align-items: center;
 width: 50vw;
 height: 50vh;
background-color: ${(props) => props.theme.backgroundColor};
${Text} {
color: white;
&:hover {
color: teal;
}
}
`;
​
function App() {
 return (
   <Square>
     <Text>각진 컴포넌트</Text>
   </Square>
);
}
​
export default App;

Reference

Nomad Coders - React JS 마스터클래스

'programming study > React' 카테고리의 다른 글

React & TypeScript  (0) 2022.07.19
Styled Components(4)  (0) 2022.07.18
Styled Components(2)  (0) 2022.07.07
Styled Components(1) - 개요, 스타일링 방법, 동적 스타일링, 컴포넌트 확장  (0) 2022.07.06
Hook의 개요  (0) 2022.06.21