이 글은 『리액트를 다루는 기술』(개정판/ 김민준 저 / 길벗 출판사)이라는 책을 참고하여 썼습니다.
학습 범위: p218 ~p.252
Today I Learned
1. CSS Module: 타일을 작성할 때 CSS 클래스가 다른 CSS 클래스의 이름과 절대 충돌하지 않도록 파일마다 고유한 이름을 자동으로 생성해 주는 옵션.
2.styled-components: 스타일을 자바스크립트 파일에 내장시키는 방식으로 스타일을 작성함과 동시에 해당 스타일이 적용된 컴포넌트를 만들 수 있게 해준다.
3. 기본 CSS 이름짓는 규칙: 이름이 컴포넌트 이름-클래스 형태로 지어져 있다(예: App-header). 클래스 이름에 컴포넌트 이름을 포함시킴으로써 다른 컴포넌트에서 실수로 중복되는 클래스를 만들어 사용하는 것을 방지할 수 있다.
4. CSS Module은 CSS를 불러와서 사용할 때 클래스 이름을 고유한 값, 즉 [파일 이름]_[클래스 이름]__[해시값] 형태로 자동으로 만들어서 컴포넌트 스타일 클래스 이름이 중첩되는 현상을 방지해 주는 기술이다.
(아래는 실제 console.log 해보면 나오는 값이다. 우리가 지정한 클래스 이름 앞뒤에 파일 이름과 해시값이 붙었다.)
{ wrapper: “CSSModule_wrapper__1SbdQ” }
5. 글로벌 CSS 작성법
/* 글로벌 CSS를 작성하고 싶다면 */
:global .something {
font-weight: 800;
color: aqua;
}
6. CSS Module을 사용하면 클래스 이름을 지을 때 그 고유성에 대해 고민하지 않아도 된다. 흔히 사용하는 단어로 이름을 짓는다고 해도 전혀 문제가 되지 않는다. 해당 클래스는 우리가 방금 만든 스타일을 직접 불러온 컴포넌트 내부에서만 작동하기 때문이다.
7. 컴포넌트 스타일링의 또 다른 패러다임은 자바스크립트 파일 안에 스타일을 선언하는 방식이다. 이 방식을 ‘CSS-in-JS’라고 부른다.
8. styled-components와 일반 classNames를 사용하는 CSS/Sass를 비교했을 때, 가장 큰 장점은 props 값으로 전달해 주는 값을 쉽게 스타일에 적용할 수 있다는 것이다.
/* 다음 코드는 inverted 값이 true일 때 특정 스타일을 부여해 줍니다. */
${props =>
props.inverted &&
css`
background:none;
border:2px solid white;
`;
const StyledComponent = () => (
<Box color=“black“>
<Button>안녕하세요</Button>
<Button inverted={true}>테두리만</Button>
</Box>
);
export default StyledComponent;
//props로 넣어준 값을 직접 전달해 줄 수 있다.
const Box = styled.div`
background: ${props => props.color || 'blue' }
padding: 1rem;
display:flex;
`;
9. 만약 스타일 컴포넌트 쓰기 애매한거 같은건??
//사용해야 할 태그명이 유동적이거나 특정 컴포넌트 자체에 스타일링 해주고 싶다면 다음과 같은 형태로 구현가능
const MyInput = styled(‘input‘)`
background:gray;
`
const StyledLink = styled(Link)`
color:blue;
`
'📖 리액트 > 리액트를 다루는 기술' 카테고리의 다른 글
11장 컴포넌트 성능 최적화 (0) | 2022.02.07 |
---|---|
10강 일정관리 웹 애플리케이션 만들기 (0) | 2022.02.04 |
8장 Hooks (2) | 2022.01.26 |
7장 컴포넌트의 라이프사이클 메서드 (0) | 2022.01.25 |
6강 컴포넌트 반복 (0) | 2022.01.24 |