728x90
Styled-components에 Props 활용하기
styled-components를 이용해 css를 지정하고자 할때 props를 활용해야 할 때가 있다!
styled-componets로 작성된 컴포넌트들로 구성된 아래와 같은 컴포넌트가 있다
export default() => (
<Header>
<List>
<Item>
Item1
</Item>
<Item>
Item2
</Item>
<Item>
Item3
</Item>
<Item>
Item4
</Item>
</List>
</Header>
);
만약 Item 들에 각각 다른 background-color를 적용하고 싶다면? 어떻게 해야할까!!?
적용하고 싶은 background-color 를 Item에 props로 전달, styled-components로 선언한 Item에서 이 props를 받아주면 된다!
const Item = styled.li`
(...생략)
border-color: ${props => props.even ? '#3498db' : '#333333'}
${props => props.even && `
color: white;
background-color: grey;
`}
`;
export default() => (
<Header>
<List>
<Item even={false}>
Item1
</Item>
<Item even={true}>
Item2
</Item>
<Item even={false}>
Item3
</Item>
<Item even={true}>
Item4
</Item>
</List>
</Header>
);
특정 상태에 따라 css를 지정하는 것도 가능하다!
const Item = styled.li`
(...생략)
border-color: ${props => props.even ? '#3498db' : '#333333'}
${props => props.even && `
color: white;
background-color: grey;
`}
`;
export default() => (
<Header>
<List>
<Item even={false}>
Item1
</Item>
<Item even={true}>
Item2
</Item>
<Item even={false}>
Item3
</Item>
<Item even={true}>
Item4
</Item>
</List>
</Header>
);
728x90
'React [클론코딩 학습일지]' 카테고리의 다른 글
4-1. The Movie DB API (0) | 2021.07.26 |
---|---|
3-6. 현재 위치에 특정 스타일 넣기 (withRouter 사용하기) (0) | 2021.07.23 |
3-4. Global Styles In React (0) | 2021.07.20 |
3-3. CSS in React (0) | 2021.07.19 |
3-2. CSS in React (1) | 2021.07.13 |