히어로배너에 효과를 줄려고 document 나 localStorag 안되서 UseEffect 적용해봣더니.. 에러메세지가..!
It only works in a Client Component..? 잉? 그렇다 나는 Server Component를 작업하고 있는 것을 까먹고 있었다.
생각을 해보자. 클라이언트는 브라우져 렌더링을 컨트롤 하는 거고 , Next는 옛날 JSP 같이 서버에서 렌더링해서 그냥 데이터를 쏴주는 거다. 그니깐 상태관리를 못하징 .. 그리고 localStorage나 Document를 사용할 수 없다.
[렌더링 정리]
그래픽 마스터로써로 잊고 있었던 Client & Server side rendering 을 정리해보겠다.
렌더링이란 컴퓨터그래픽스에서 공부했던 연산(Compute)과 어떤 프로그램 뷰포트(게임프로그램,<canvas> 등)에 뿌려주는것(ㅇ
Client side rendering : 브라우져에서 연산 후 렌더링
Server side rendering: 서버에서 연산 후 렌더링 (추가 기록 )
[삽질기록]
--스타일 작업하면서 메모--
아니 그러면 Next 에서는 크롬 윈도우 객체들 사용 못하는건가?
https://nextjs.org/docs/pages/building-your-application/optimizing/fonts
폰트보니깐 굉장히 신기하네.. Built in automatic self hosting ;; 개쩜
근데 https://nextjs.org/docs/pages/building-your-application/optimizing/fonts
여기보니깐 _app 이 있넹! 근데 나는 app 라우터 사용하고 싶은데, 이건 page 라우터를 사용해야할는 것 같아
링크 자세히 보면 pages/building- 어쩌구 /optimizing/font임 걍
나는 Wendy one 폰트 쓰려고 하는데
https://nextjs.org/docs/app/building-your-application/optimizing/fonts#google-fonts
얘네들이 추천하는 Variable fonts 에 해당안되서 내가 specify a weight 해줘야해
https://nextjs.org/docs/app/building-your-application/optimizing/fonts#using-multiple-fonts
여기서 Using Multiple Fonts 를 보고 폰트를 설정하면 됨 (export 빠져서 잠시 방황함)
자꾸 layout.js 파일이 보인다. -> 나중에 공부하긴 해야할것 같다.
https://nextjs.org/docs/app/building-your-application/rendering/client-components
그니깐 넥스트는 디폴트가 13버전이후로 모두 서버 컴포넌트 사용하는데 사이사이에 Client Component 넣어서 쓴다는 거임
위의 링크 보니깐 Client Component 디렉티브 달아주면 하위의 요소들까지 다 클라 컴포로 인식됨.
만약에 서버<-> 클라이언트간 데이터 주고 받을 일이 있으면 가능하면 서버 -> 클라이언트 로 하고
https://velog.io/@hwisaac/NextJSBeta-Server-and-Client-Components
방법은 여기에 적혀있음.
다시 이제 방법 대충 다 알았으니깐 디자인작업좀 하러 ㅂㅂ
Layout.js
이게 page.js 를 포함하는거네 <html> <body> 태그도 있고... -> 폰트는 여기다가 추가하면 되겠넹!
Radix
아 스타일하기 귀찮아서 라이브러리 쓸려고했는데.. 내가 _app 에 스타일 적용한거 아니여서 pure css 만 먹는데 아래 라이브러리는 막 변수같은거 있어서 custom 하는 방식으로는 못씀 (중단) 걍
https://medium.com/frontendweb/how-to-use-radix-ui-library-with-nextjs-c43a313116ef
https://github.com/vercel/next.js/discussions/17089
이거 보면 해결방법 알려주는뎅 module 방식으로 하면서 쉬운거 사용하려했는데.. _app을 재정의 하긴 해야할 것 같다.
나중에 테마css 끼고 사용해보고, 커스텀은 일단 손때야겠다.