Next.js v13 React Essentials부분 질문입니다.
[카테고리]App Router->React Essentials https://nextjs.org/docs/getting-started/react-essentials 1번문장 Client Components에서 "Once "use client" is defined in a file, all other modules imported into it, including child components, are considered part of the client bundle."라는 문장과 2번문장 Composing Client and Server Components에서 "On the server, React renders all Server Components before sending the result to the client. This includes." 1번문장과 2번문장이 모순된것처럼 느껴집니다. 1번문장을 "use client"를 명시한 file에 import된 하위 자식컴포넌트 역시 Client Components로 간주된다고 이해했는데, 그럼 2번문장과 같이 클라이언트 컴포넌트하위에 있는 "Server Components nested inside Client Components" 역시 클라이언트 컴포넌트로 간주되어서 클라이언트 컴포넌트의 렌더링방식을 따라야하는 것 아닌가요??
개발자
#next.js
#server-component
#client-component
답변 2
댓글 3
조회 573
2년 전 · 태진 님의 새로운 댓글
Nextjs async 서버컴포넌트 질문있습니다.
// page.tsx import WeatherList from "@/components/containers/main/WeatherList"; export default function Home({ searchParams, }: { searchParams: { country: string }; }) { const country = searchParams.country ? searchParams.country : "kr"; return ( <> <WeatherList country={country} /> </> ); } // server component export default async function WeatherList({ country }: { country: string }) { const res = await fetch( `http://localhost:3000/api/cityList?country=${country}` ); const cityList = await res.json(); return ( ... ); } 'WeatherList' cannot be used as a JSX component. page.tsx 에서 WeatherList 컴포넌트부분에 위와같은 에러가 뜹니다.. @types/react 를 18.2.8 버전으로 바꿔줘도 해결이안되는데 저와 같은분 계실까요?
개발자
#next.js
답변 2
댓글 2
조회 405
일 년 전 · 성지수 님의 새로운 댓글
nextjs styled-component ssr 에러
모든 분들이 격어보셨을 에러에 대해 해결이 되지 않아 질문 드려봅니다. 아래 참고를 통해 nextjs ssr에서 styled-component가 적용되게 시도했습니다 (현재 app router 방식을 사용하고 있습니다) 하지만 동일하게 했을 때 여전히 아래와 같은 오류가 떴습니다. babel, swc 둘 다 시도 했을 때 동일 했고 혹시 제가 놓지고 있는 부분이 있을까요? 4번까지 진행했습니다. nextjs styled-component typescript 오류 : Error: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/context-in-server-component 참고 : https://dev.to/rashidshamloo/using-styled-components-with-nextjs-v13-typescript-2l6m#5
개발자
#nextjs
#styled-component
#ssr
답변 2
댓글 8
조회 1,093
8달 전 · 익명 님의 질문 업데이트
Next.js RSC Network response관련해서 질문이 있습니다.
Next.js App router를 사용하고 있습니다. 간단한 검색기능을 구현하는 프로젝트를 진행 중인데 패칭 과정은 아래와 같습니다. 1. 자식 Client 컴포넌트에서 url의 searchParams(router.replace)를 변경하면, 2. 부모 Server Component는 변경된 Search Params를 바탕으로 라우트 핸들러에서 서버에 요청을 하고 필요한 데이터를 Server Component로 받아옵니다 . (부모 RSC는 캐싱을 하지 않게 구현되어있습니다.) 3. 받아온 데이터를 가공 후 자식 Client 컴포넌트에 내려주면, 4. props를 받은 자식 Client 컴포넌트에서 보여주는 방식으로 진행하고 있습니다. 위 과정에서 에러가 발생하는 것은 아니고 정상적으로 잘 동작하고 있습니다. 다만 브라우저 devtool의 Network 탭을 확인하는데 의문점이 있어서 질문을 드립니다. RSC에서 요청을 하면 _rsc 페이로드로 데이터를 받아오는 걸로 알고 있습니다. 분명 _rsc로 요청이 가고 정상적으로 네트워크탭의 preview에 RSC 페이로드가 찍히는가하면 정상적으로 요청이가고 페이지를 확인했을 땐 정상적으로 패칭과 렌더링까지 완료되었는데, 네트워크에서 preview에는 "no data found for resource with given identifier"로 나옵니다. 결론은 패칭과 렌더링은 정상적으로 동작하지만 네트워크탭의 preview와 response가 나올 때도 있고 안 나올 때도 있어서, 명확한 기준이 있는지 궁금해서 질문을 올립니다.
개발자
#next.js
#network
#devtool
답변 0
댓글 0
추천해요 2
조회 275
일 년 전 · 김하림 님의 새로운 답변
NextJS13 모바일 구분 및 기술 문의
안녕하세요 nextjs13 으로 프로젝트를 진행할려고 하면서 문의 사항이 있습니다. 전제 조건으로 하이브리드앱으로 구현 예정이며, 웹뷰 방식으로 웹, 앱을 같이 사용할려고 합니다. (레이아웃을 웹, 앱 별도 구성 예정) 궁금한게 많아서 질문이 많이 있네요. 전문가분들 도움 부탁드립니다. 1. react-device-detect 모바일 여부를 구분하여 레이아웃을 구성할려고하는데, MobileView의 경우 use client 에서만 작동되는 것같습니다. MobileView을 사용하여 ssr 사용은 불가능한건가요? 2. style-component nextjs12 에서는 style-component를 사용되었는데 13으로 올라가면서 css-in-js방식을 사용 못하는것으로 보이며, tailwindcss, postcss를 권장하는걸로 보이는데 맞나요? 추가로 style-component 를 use client로 사용할 경우 하위에 들어가는 컴포넌트들이 다 csr 형식으로 되는게 맞는건가요? 3. RCS(React Server Components) children 으로 화면을 넘겨서 사용하는데 중간에 use client 를 사용하면 하위도 csr 형태로 인식이 되는건지 문의 드립니다. 감사합니다.
개발자
#react
#nextjs
#next13
#nextjs13
#ssr
답변 1
댓글 0
추천해요 1
조회 479
일 년 전 · 상현 님의 답변 업데이트
Next.js server component(app router)의 auth 관련 질문 입니다.
안녕하세요. 이번에 Next.js(13)에서 최신 기술인 app router를 기반으로 자그마한 홈페이지를 구축 중에 있습니다. JWT 기반으로 SSR을 구축하고 있습니다. middlware로 어떻게 든 토큰 재발행이 가능한 로그인 구현을 완료 했습니다. 하지만 ServerComponent이다 보니, RSC에서 accesstoken 혹은 refreshtoken과 같은 인증 토큰이 만료 되었을 때, 재 발행을 하려면 어떻게 해야 할까요? cookie나 header는 접근은 가능해도 Set-Cookie를 내려 보내거나 할 수는 없는 걸로 문서에 나오고 실제로도 되지 않습니다. 어떻게 하면 ServerComponent에서 토큰을 재발행 하거나 다른 인증 방법이 있을 까요? 아니면 JWT + Session으로 가는 조합을 사용 해야 할까요??? 또, client와 server 간의 토큰 공유를 위해 access-token만 http-only를 해제하고 사용 중에 있습니다. 이게 cors나 csrf와 같은 공격에 취약한 문제가 있어서 이게 올바른 구현 방법일까요? 일단 제가 찾은 방법으로 가장 쉽게 해결되는 방법은 아직 실험 단계인 server action을 활성화 해서 클라이언트에서 토큰을 가지고 있을 필요가 없이 서버에서만 관리 하는 방법입니다. BFF을 일부 수용해서 해결 했습니다. front <-> BFF <-> api
개발자
#next.js-13
#oauth2.0
#jwt
답변 3
댓글 1
추천해요 1
조회 1,176
일 년 전 · 안희수 님의 답변 업데이트
NextJS 14에서 JWT를 쿠키를 통해 관리하려고 하는데 서버에서 set-cookie 해주는 방식말고 route 핸들러에서 주입할수는 없나요?
안녕하세요. 최근 NextJs를 공부하며 이전 리액트 기반의 사이드 프로젝트를 NextJs로 구현해보고 있습니다. 카카오 로그인만 지원을 하고 있고, 프론트 쪽에서 카카오 인가 코드를 백엔드로 넘기면 백에서 jwt를 발급해서 응답으로 access token과 refresh token을 프론트로 넘겨주고 있습니다. 이전 프로젝트에서는 두 토큰 모두 localStorage에 저장하는 방식으로 했었는데요, 이번에는 쿠키를 이용해보려고 하고 있습니다. 다만 백엔드에서 set-cookie를 해놓지 않아서 응답으로 받은 토큰을 따로 쿠키에 저장해야하는 상황입니다. 하지만 Server Component에서는 set cookie가 안되는 것으로 알고 있습니다. <목표 구현 방식> route handler를 통해서 백엔드 api를 호출하고 그 값을 쿠키에 저장하도록 코드를 짰습니다. (/app/api/token/route.ts) return 값은 확인을 위해서 임의로 넣었습니다. 그리고 쿠키에 저장된 토큰을 통해서 서버 컴포넌트에서 이를 이용해 백엔드 api 통신을 하고 싶습니다. 하지만 서버 컴포넌트에서 쿠키를 확인하니 비어있는 쿠키인 것을 알 수 있었습니다. 얕은 지식으로 생각을 했을때, (route handler - 브라우저 혹은 서버 컴포넌트)에서 생성한 쿠키는 (백엔드 도메인 - 브라우저 혹은 서버 컴포넌트) 통신에 사용되는 쿠키와 다르기 때문이라고 생각이 들었는데 해답을 찾지 못했습니다. <질문 사항> - 백엔드 서버에서 set-cookie를 하지 않고 직접 구현할 순 없을까요? 쿠키는 forwarding이 안되나요? - 제가 생각한 구조 말고 추천하시는 토큰 관리 방식에 대해서 알려주셔도 감사하겠습니다. 아직 초보 개발자에 글도 잘 쓰지 못해 이해하시기 힘들 것 같지만, 넓으신 아량으로 지식을 나눠주신다면 정말 큰 도움이 될 것 같습니다. 긴글 읽어주셔서 감사합니다 (_ _)
개발자
#next.js
#jwt
#react
#front-end
#cookie
답변 1
댓글 0
추천해요 1
조회 1,003
일 년 전 · 오두용 님의 답변 업데이트
next auth를 사용중인데 서버 컴포넌트에서 useSession을 사용하는 방법이 있을까요?
안녕하세요 next 13버전으로 프론트를 구현하고있습니다. 로그인은 next auth로 하고 있고 12버전에서 13으로 올리면서 useSession을 사용하는 부분에 에러가 발생합니다. Error: React Context is unavailable in Server Components next.js 13버전은 서버컴포넌트가 기본으로 알고 있어서 일반적인 방법으로는 useSession을 사용하지 못하는 것 같습니다. 혹시 서버 컴포넌트에서 next auth의 session값을 불러올 수 있는 방법이 있을까요?
개발자
#next.js
#next-auth
#server-component
답변 2
댓글 2
추천해요 1
조회 1,777
2년 전 · 이상원 님의 질문
실무에서 NextJS 이전 버전으로 개발을 진행해도 유지보수에 문제가 없을까요?
안녕하세요 금일 두번이나 질문을 올리게 되는 주니어 프론트엔드 개발자입니다 :) 개인적으로 고민이 생겼습니다. 현재 나온 NextJS 13버전을 자세히 보면 볼수록 이전 12버전과는 다르게 'use client' 이렇게 주석을 달아서 client components 와 server components를 구분지어놓고 상태관리등을 엄격하게 다루고 있으며, 아직까지 CSS-in-Js 의 지원에 관해서는 진행중이라는 부분에서 많이 어색하고, 어떻게 해나갈지 조금은 막막합니다. 할 줄 아는 SSR 지원 프레임워크는 Next 하나 뿐이라, 13버전을 밀고 나갈지 아니면 안전하게 그 이전의 버전으로 개발을 진행할까가 현재의 고민입니다. 다만 이전 버전으로 초기 개발을 진행할 시에 추후에 업데이트 되는 react 18, next 13 이상의 버전들이 반영될 때마다 유지보수에 어려움을 겪을 수도 있다는 게 개인적인 두려움인데요.. 실무에서 개발 스택을 정하는 시기가 머지 않아서, 미리 여러 인사이트들을 구하고 있는 중에 위의 부분이 마음에 걸려서 글을 써봅니다. 혹은 nextjs 13버전으로 현업에서 활용한 인사이트들이 있는지도 궁금합니다! 감사합니다.
개발자
#react
#next.js
#frontend
답변 0
댓글 0
조회 168
React 18의 서버 컴포넌트가 활성화 되면 react-query는 사라질까요?
React 18에 새로 도입된 Server Component는 서버에서 렌더링되며 데이터 베이스에도 직접 접근할 수 있다고 합니다. 서버에서 렌더링되고, 직접 DB의 값을 fetching한다면 앞으로 react-query를 사용할일이 없어지는 걸까요? 앞으로 Server Component가 바꿀 프론트엔드 생태계가 궁금해지네요.
개발자
답변 2
댓글 0
추천해요 9
조회 1,414