Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- javascript
- React.js
- react
- 타입스크립트
- CSS
- returnType
- NonNullable
- JS console
- click and drag
- vue.js
- 레이아웃쪼개기
- 제네릭
- 2022
- 커스텀
- 폰트적용하기
- 누구나 자료구조와 알고리즘
- React Native
- reactjs
- 성능최적화
- 공통컴포넌트
- 반복줄이기
- const 단언문
- typescript
- 개발콘텐츠
- 타입좁히기
- utilty type
- TSDoc
- Chart.js
- 티스토리꾸미기
- 리액트
Archives
- Today
- Total
몽땅뚝딱 개발자
[React] 스타일드 컴포넌트(styled component) 사용하기 본문
Development/React.js · Next.js
[React] 스타일드 컴포넌트(styled component) 사용하기
레오나르도 다빈츠 2022. 9. 13. 23:10
◽ 설치하기
npm i styled-components
◽ import 하기
import styled from "styled-components";
◽ 사용하기
예제 1. 버튼 만들어보기
let YellowBtn = styled.button`
background: yellow;
color: black;
padding: 10px;
`
function Detail(props) {
return (
<div>
<YellowBtn>버튼</YellowBtn>
</div>
)
}
예제 2. props로 속성 넘겨받기
let YellowBtn = styled.button`
background: ${ props => props.bg };
color: black;
padding: 10px;
`
function Detail(props) {
return (
<div>
<YellowBtn bg="blue">버튼</YellowBtn>
</div>
)
}
예제 3. 기존 스타일 재사용하기
let YellowBtn = styled.button`
background : ${ props => props.bg };
color : black;
padding : 10px;
`;
// 이렇게 재사용이 가능하다.
let NewBtn = styled(YellowBtn)`
color: red;
`
예제 4. props로 전달받기
const ProductItem = styled.div<{ columnCount: number }>`
height: 100%;
padding: 20px 7px;
cursor: pointer;
width: ${(props) => `calc(100% / ${props.columnCount} - 14px)`};
`
return (
<ProductItem columnCount={props.columnCount} onClick={handleOnClick} />
)
예제 5. 자식 컴포넌트에 CSS 적용하기
<ProductItem columnCount={props.columnCount} onClick={handleOnClick}>
<Image>
</Image>
</ProductItem>
const ProductItem = styled.div<StyledProps>`
height: 100%;
padding: 20px 7px;
cursor: pointer;
width: ${(props) => `calc(100% / ${props.columnCount} - 14px)`};
&:hover ${Image} {
opacity: 0.5;
}
`
◽ CSS 간섭을 줄이는 또 다른 방법
CSS 파일에서는 다른 JS 파일에 간섭하지 않는 '모듈화' 기능을 제공한다.
아래와 같이 [컴포넌트명.module.css] 형식으로 작명하고 컴포넌트명.js 파일에서 import하여 사용하면 해당 파일에만 적용된다.
출처
'Development > React.js · Next.js' 카테고리의 다른 글
[React] 기타 정보 (0) | 2022.09.25 |
---|---|
[React] 라이프사이클(LifeCycle) (0) | 2022.09.25 |
[React] router / Link 태그 / useParams() 사용하기 (0) | 2022.09.05 |
[React] 커링 함수 구현하기 (0) | 2022.09.04 |
[React] process.env.public_url 사용하기 (작성 중) (0) | 2022.09.02 |
Comments