npm install styled-components
import styled from 'styled-components
styled-components를 이용하면 컴포넌트를 만들 때 스타일은 미리 주입해서 만들 수 있음.
예시로 padding:20px인 div박스를 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>
)
}
sytled.html태그
✔️ sytled-components의 장점
장점1. css파일을 오픈할 필요 없이 js파일에서 바로 스타일링을 해줄 수 있음
장점2. 다른 js파일에 오염을 주지 않음. 그냥 css파일은 오염됨
→ react는 spa라 하나의 html, css로 합치게 되는데 이때 오염이 발생할 수 있음
장점3. 페이지 로딩 단축
→ 여기 적은 스타일은 html페이지의 <style>태그에 넣어줘서 그럼
→ 또 필요한 css만 가져올 수 있으므로 로딩시간 단축 가능
App.css파일을 만들어서 App.js에서 import해서 쓴다고해도 여기 적은 클래스명들은 Detail.js까지 사용 가능함(오염)
그럴땐 style-components를 써도 되지만 그냥 CSS파일에서도 다르 JS파일에 간섭하지 않는 '모듈화'기능을 제공하는데
컴포넌트명.module.css
css파일을 만들때 이렇게 작명하면 되겠다 .
그리고 컴포넌트명.js파일에서 import해서 쓰면 그 스타일들은 컴포넌트명.js파일에만 적용이 됨.
여러가지 비슷한 UI가 필요한 경우가 있음
예를 들어 지금 노란 버튼이 아닌 오렌지색 버튼이 필요할 경우.
여기도 props문법을 지원함
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>
)
}
${ props => props.bg }
로 쓰면 styled-components에서 props를 쓸 수 있음
bg부분은 자유롭게 작명하면 되고, 이제 컴포넌트 쓸 때 bg라는 props를 입력가능함.
let YellowBtn = styled.button`
background : ${ props => props.bg };
color : ${ props => props.bg == 'blue' ? 'white' : 'black' };
padding : 10px;
`;
이런식으로 간단한 프로그래밍도 가능
✔️ sytled-components의 단점
단점1. js파일이 복잡해짐
→ 이 컴포넌트가 styled 컴포넌트인지 일반 컴포넌트인지 구분도 어려움
단점2. js파일 간 중복 디자인이 발생하면?
→ 다른 파일에서 스타일 넣은 것들을 import해와서 쓰면 되는데 이럼 그냥 일반 CSS파일을 쓰는거랑 차이가 없음.