컴포넌트가 많은 경우 스타일링을 하다 보면
같은 경우가 있다.
그래서 스타일을 바로 적용해 컴포넌트를 만들 수 있는데…
npm install stlyed-components
import styled from 'styled-components'
컴포넌트를 만들 때 스타일을 미리 주입해서 만들 수 있다.
import styled from 'styled-components';
let Box = styled.div`
padding : 20px;
color : grey
`;
let YellowBtn = styled.button`
background : yellow;
color : black;
padding : 10px;
`;
function Detail(){
return (
<div>
<Box>
<YellowBtn>버튼임</YellowBtn>
</Box>
</div>
)
}
<div>
를 만드려면 styled.div``
<p>
를 만드려면 styled.p``
.
backtick 기호 안에 CSS를 지정해 줄 수 있고
변수에 할당해 사용할 수 있다.
장점
단점
App.css
파일을 만들어서 App.js
에서 import
를 해서 사용해도
클래스명들은 Detail.js
까지 사용이 가능해 진다.(오염됨)
이를 방지하기 위해 다른 JS파일에 간섭하지 않는 ‘모듈화’ 기능을 제공한다.
컴포넌트명.module.css
와 같이 네이밍 시, 컴포넌트명.js
에서 import해서 사용하면 그 파일에만 적용이 가능하다.
props 문법을 활용해 여러가지 비슷한 UI를 만들 수 있다.
import styled from 'styled-components';
let YellowBtn = styled.button`
background : ${ props => props.bg };
color : black;
padding : 10px;
`;
function Detail(){
return (
<div>
<YellowBtn bg="orange">오렌지색 버튼임</YellowBtn>
<YellowBtn bg="blue">파란색 버튼임</YellowBtn>
</div>
)
}
또한 만들어진 컴포넌트를 상속 시켜 사용도 가능하다.
let YellowBtn = styled.button`
background: ${props => props.bg};
color: ${props => props.bg == 'blue' ? 'white' : 'black'};
padding: 10px;
`
let NewBtn = styled(YellowBtn)`
border-radius: 30px;
`