Server component 와 CSS-in-JS
https://shiwoo.dev/posts/next-13-and-css-in-js
Next js 15로 프로젝트를 시작하기 전, 익숙하고 동적 스타일 적용에도 편리한 Styled-components를 스타일 적용에 사용할 계획이었다. 하지만 막상 프로젝트를 시작하고 styled.ts 파일을 적용하니 저런 오류가 떴다. 일반적인 방식으로는 클라이언트 컴포넌트에서만 사용할 수 있고, 서버 컴포넌트에서는 CSS-in-JS를 쓸 수 없다고 한다.
공식 문서에 보면 추가적인 설정(https://nextjs.org/docs/app/building-your-application/styling/css-in-js)을 통해 서버 컴포넌트에서도 styled-components를 사용할 수 있다고 하지만 복잡도가 증가하고 굳이굳이 이걸 쓸 필요가 없어서 next js에서 공식적으로 지원하는 방식인 module.css와 tailwind를 함께 사용하기로 했다.
그 외 styled-components의 장점이었던 동적 스타일 관리는, Classnames라는 class를 조건부로 설정할 때 유용한 라이브러리를 사용하여 복잡한 tailwind의 class들을 좀 더 깔끔하고 동적으로 관리할수 있게끔 해주었다.
+)
모듈 방식으로 스타일을 적용 할 때는 보통 className에
import s from './Header.module.css'
export function Header() {
return (
<header className={s.header}></header>
)
}
이런식으로 적용하는데, 저런 방식으로 kebab-case를 적용하면 오류가 난다.
따라서 케밥 케이스를 적용하고 싶다면
import s from './Header.module.css'
export function Header() {
return (
<header className={s['header-wrapper']}></header>
)
}
이렇게 대괄호 안에 클래스명을 써주면 된다.
그 외 className 표기법: http://xn--birdmee-9t83a.tistory.com/53