inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

익스텐션 질문

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 설치된 익스텐션이 궁금하여 질문드립니다. 17:20에 return문에 h1태그를 추가하고 저장하시니까 ()가 자동으로 감싸지는데 어떤 익스텐션을 설치해야하나요? 아니면 어떤 설정을 해야하나요?

  • react
  • typescript
  • next.js
김보섭 댓글 1 좋아요 0 조회수 114

7.1 서버 액션에서

해결됨

한 입 크기로 잘라먹는 Next.js

import style from "./page.module.css"; // 변경 후: import Image from 'next/image'; import { notFound } from "next/navigation"; import { BookData } from "@/types"; export const dynamicParams = true; export async function generateStaticParams() { return [{id: "1"}, {id: "2"}, {id: "3"}]; } async function BookDetail({bookId}:{bookId:string}){ // params가 Promise이므로 먼저 await로 해결(resolve)해야 합니다 const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${bookId}`) ; if (!response.ok){ if (response.status === 404) { notFound(); } return <section>Failed to fetch books</section>; } const book = await response.json(); const { id, title, subTitle, description, author, publisher, coverImgUrl } = book; return ( <section> <div className={style.cover_img_container} style={{ backgroundImage: `url('${coverImgUrl}')` }} > <img src={coverImgUrl} alt={title || "책 표지"} /> </div> <div className={style.title}>{title}</div> <div className={style.subTitle}>{subTitle}</div> <div className={style.author}> {author} | {publisher} </div> <div className={style.description}>{description}</div> </section> ); } function ReviewEditForm() { async function createReviewAction(formData: FormData) { "use server"; //console.log("server action called"); const content = formData.get("content")?.toString(); const author = formData.get("author")?.toString(); console.log("server action called", { content, author }); } return ( <section > <h2>리뷰 작성</h2> <form action={createReviewAction}> <textarea name="content" placeholder="리뷰를 작성해주세요" ></textarea> <input name="author" placeholder="작성자" /> <button type="submit">리뷰 작성</button> </form> </section> ); } export default function Page({ params }: { params: { id: string } }) { // const bookId = params.id; // 미리 params 처리 return ( <div className={style.container}> <BookDetail bookId={params.id}/> <ReviewEditForm/> </div> ) } 에서 Error: Route "/book/[id]" used `params.id`. `params` should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis at Page (src\app\book\[id]\page.tsx:79:33) 77 | return ( 78 | <div className={style.container}> > 79 | <BookDetail bookId={params.id}/> | ^ 80 | <ReviewEditForm/> 81 | </div> 82 | ) 이에러가 계속 나는데 chatgpt랑 계속 풀어 보려고 해도 쉽지 않네요 params 쓰는 시점 문제인거 같은데 강의 내용을 봐서는 잘모르겠네요 export default function Page({ params }: { params: { id: string } }) { // const bookId = params.id; // 미리 params 처리 return ( <div className={style.container}> <BookDetail bookId={params.id}/> <ReviewEditForm/> </div> ) } bookId 이 부분이 계속 async 어쩌구 하는데

  • react
  • typescript
  • next.js
Ming 댓글 2 좋아요 0 조회수 166

서버컴포넌트를 children으로 사용해도, 브라우저에서 출력이 되는 것 같습니다.

해결됨

한 입 크기로 잘라먹는 Next.js

3.5) 리액트 서버 컴포넌트 주의사항 강의의 12분 쯤 - 서버 컴포넌트를 클라이언트 컴포넌트의 children props로 사용하면, 브라우저에서 서버컴포넌트가 렌더링 되지 않는 걸 보여주는 예시에서요. (with-searchbar)/page.tsx1 (with-searchbar)/client-component.tsx (with-searchbar)/server-component.tsx 현재 잘 따라한거 같은데, 서버 컴포넌트가 브라우저에 출력이 되더라구요. 서버 컴포넌트로서 출력이 된거 같긴한데. 브라우저에서 서버 컴포넌트가 보이면 안되는 거 아닌가 싶은데, 현재 next 15.3 이라서 그런건가 싶기도 하구요!

  • react
  • typescript
  • next.js
파미에스테이션 댓글 2 좋아요 1 조회수 220

tailwind css v4 에서 색상 관련해서

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요. 강사님. tailwind v4에서 hsl 대신 oklch를 사용한다고 하는데,,, 이에 대한 안내도 있을까요? 아직 강의를 다 들은건 아니라서 커스텀 색상을 얼마나 추가할지는 모르겠는데 혹시 몰라서요!

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
jjanec 댓글 2 좋아요 0 조회수 491

git 저장소 주소가 어디있나요?

미해결

바이브 코딩: Next.js + FastAPI + Faster-Whisper로 음성 메모 앱 만들기

강의 잘 듣고 있습니다. git 주소를 찾을 수 없네요. 감사합니다.

  • next.js
  • FastAPI
  • whisper
  • openai-whisper
jino 댓글 2 좋아요 0 조회수 190

msw ssr 관련 질문입니다.

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요 제로초님 next 15버전으로 바뀌고나서 새로 처음부터 다시 강의를 들으면서 만들어 보고 있습니다. next 15버전으로 바뀌고 나서 옛날꺼랑 msw 설정이 바뀌었더라구요 그런데 강의대로 msw 설정을 하니 ssr 적용이 제대로 안되는 것 같습니다. msw 설정 후 페이지의 network 탭에 localhost document의 미리보기 내용이 없습니다. ssr이 된다면 document에 미리보기에 내용이 넘어와야 하는데 msw 설정 후에 없습니다. 옛날에 만들어 놓았던, next14 버전으로 했었던 프로젝트에서는 미리보기에 내용이 잘 담겨 ssr이 잘되고 있고, 15버전으로 진행한 프로젝트에서 layout에 있는 mswprovider 컴포넌트를 없애주니 다시 미리보기에 내용이 생기는 것으로 보아 msw 설정에서 문제가 생긴 것으로 추측됩니다. 아래는 옛날 14 버전으로 진행했던 코드입니다. msw 2.1 버전입니다. "use client"; import { useEffect } from "react"; export const MSWComponent = () => { useEffect(() => { if (typeof window !== "undefined") { if (process.env.NEXT_PUBLIC_API_MOCKING === "enabled") { require("@/mocks/browser"); } } }, []); return null; }; 아래는 지금 하고있는 코드입니다. msw 2.7.3 버전입니다. "use client"; import { Suspense, use } from "react"; import { handlers } from "@/mocks/handlers"; const mockingEnabledPromise = typeof window !== "undefined" // browser일 때 ? import("@/mocks/browser").then(async ({ default: worker }) => { if (process.env.NODE_ENV === "production") { return; } await worker.start({ // msw가 처리할 수 없는 요청이 들어왔을 때 onUnhandledRequest(request, print) { if (request.url.includes("_next")) { // next가 내부적으로 처리하는 url이기 때문에 msw가 처리할 필요 없음 그래서 return return; } print.warning(); }, }); worker.use(...handlers); (module as any).hot?.dispose(() => { worker.stop(); }); console.log(worker.listHandlers()); }) : Promise.resolve(); export function MSWProvider({ children, }: Readonly<{ children: React.ReactNode; }>) { // If MSW is enabled, we need to wait for the worker to start, // so we wrap the children in a Suspense boundary until it's ready. return ( <Suspense fallback={null}> <MSWProviderWrapper>{children}</MSWProviderWrapper> </Suspense> ); } function MSWProviderWrapper({ children, }: Readonly<{ children: React.ReactNode; }>) { // use 사용해서 promise 실행 기다리고 children return use(mockingEnabledPromise); return children; } 제 추측으로는 MSWProvider에 있는 Suspense때문에 ssr 이 안되는 것 같은데, 맞는지 궁금합니다. 그리고 맞다면 next 사용시 msw로 데이터를 mocking 하게 되면 ssr 확인을 어떻게 해야 할까요??

  • react
  • next.js
  • react-query
  • next-auth
  • msw
강주호 댓글 1 좋아요 0 조회수 201

상호작용 구분 질문

해결됨

한 입 크기로 잘라먹는 Next.js

어떤 사이트들을 보면 스크롤 하면 그 화면에 맡게 자동으로 그 다음 리스트들이 로딩해서 보여주던데요 이방식은 상호 작용이 있는것인지 상호 작용이 없다고 봐야 하는지 궁금하네요

  • react
  • typescript
  • next.js
Ming 댓글 2 좋아요 0 조회수 83

배포 하다 보니 궁금해서요 (초보 입장)

해결됨

한 입 크기로 잘라먹는 Next.js

2.20 배포하기를 하다 보니 현재 api 서버를 미리 만들어 주셔서 테스트 했는데 사실상 section2 프로젝트 안에서 db 연결해서 진행되게 allinone으로 개발하는게 더 초보 입장에서 이해하기 쉬운데 원래 이렇게 구분해서 작업해야 하나요

  • react
  • typescript
  • next.js
Ming 댓글 3 좋아요 0 조회수 204

2.19 파비콘이 안보여요

해결됨

한 입 크기로 잘라먹는 Next.js

import { Html, Head, Main, NextScript } from "next/document"; export default function Document() { return ( <Html lang="kr"> <Head /> {/* favicon 설정 */} <link rel="icon" href="/public/favicon.ico" /> <body> <Main /> <NextScript /> </body> </Html> ); } 파비콘 설정 설명이 없어서 chatgpt가 알려줘서 이렇게 했는데 안보이네요

  • react
  • typescript
  • next.js
Ming 댓글 2 좋아요 0 조회수 83

fallback상태일때 메타태그

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 강사님 질문이 있습니다. fallback 상태일때는 SEO가 적용이 되지 않는것은 이해가 됐는데 서버에서 요청한 페이지(book/4)를 내려주면 결국 해당 페이지에 대한 SEO가 다시 잘 적용이 되는데 굳이 fallback 상태일때도 SEO를 신경써줘야하는 이유가 있나요?

  • next.js
어차피 마늘 댓글 2 좋아요 0 조회수 94

react-query enabled 옵션

미해결

Next + React Query로 SNS 서비스 만들기

react-query 사용 시 enabled 옵션이 true인 경우 queryFn을 실행하지는 않지만 queryKey는 생성되는데 queryKey가 안 생기게 하자니 Hook을 조건부로 작성할 수 없어서 이런 방법은 불가능하고 queryFn은 실행하지 않으니 괜찮다는 생각도 드는데 예를 들면 ["post", id]가 있고 id가 null인 경우 queryKey는 ["post", null]로 무조건 생성이 되더군요. Observe도 많은 곳에서 쓸 수록 2 or 3 이런 식으로 증가하고요. 이게 성능에 문제가 없을지 아니면 queryKey 생성까지 막을 수 있는 방법이 있는지 궁금합니다.

  • react
  • next.js
  • react-query
yskim 댓글 2 좋아요 0 조회수 265

쿠폰 다시 부탁드려도 될가여?

미해결

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

기존강의 업데이트 된 정보를 이제 봐서 쿠폰 정보를 놓쳤는데 혹시 쿠폰 다시 보내주실 수 있으신가여?

  • react
  • node.js
  • seo
  • graphql
  • next.js
Tay 댓글 2 좋아요 0 조회수 152

prefetch 속성 질문

해결됨

한 입 크기로 잘라먹는 Next.js

강사님의 강의를 들으면서 test 페이지가 프로그래메틱하게 이동하기 때문에 따로 useEffect를 사용해 프리페칭되도록 만드는 것과, Link 컴포넌트에 prefetch 속성을 false로 하여 프리페칭되지 않게 만들 수 있다고 이해했습니다! 그런데 직접 코드를 작성하고 npm run start로 재실행한 뒤 새로고침을 했는데도 search 페이지에 필요한 js번들이 남아있고 test 페이지의 번들은 프리페칭되지 않았는데 어디가 문제인지 알 수 있을까요?

  • react
  • typescript
  • next.js
고은 댓글 2 좋아요 0 조회수 164

서버 에러가 납니다.

해결됨

한 입 크기로 잘라먹는 Next.js

const { id } = await params; const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${id}}`); const book = await response.json(); book { statusCode: 500, message: 'Internal server error' } nest가 실행중인곳에는 Argument id is missing. PrismaClientValidationError: Invalid this.prisma.book.findUnique() invocation in /Users/leecho/dev/onebite-books-server/src/book/book.service.ts:55:41 52 } 53 54 async findOneBook(id: number) { → 55 const book = await this.prisma.book .findUnique({ select: { id: true, title: true, subTitle: true, description: true, author: true, publisher: true, coverImgUrl: true }, where: { + id: Int } }) Argument id is missing. 이런 에러가 나는데 왜 이럴까요..?

  • react
  • typescript
  • next.js
초랑이 댓글 2 좋아요 0 조회수 252

ssg와 프리패칭에 대해 질문이 있습니다.

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요. 강의 잘 듣고 있습니다. Next.js는 오직 초기 접속시에만 HTML 파일을 불러와 Hydration 하고 그 이후의 페이지 이동은 리액트의 CSR(Client Side Rendering) 방식으로 처리하게 됩니다. 따라서 새롭게 HTML이 요청되지 않고 오직 브라우저측에서 JS Bundle을 실행해 컴포넌트를 교체하는 방식으로만 페이지 이동이 처리됩니다. 라고 설명주셨는데요. 하지만 ssg 파트에서는 페이지 요청시 이미 빌드된 html 을 반환한다고 하셨는데 이 부분이 잘 이해가 되지 않습니다. 빌드를 하면 SSR를 설정하지 않은 페이지는 기본적으로 SSG로 작동하고, 그렇다면 굳이 프리페칭을 하지 않더라도 이미 완성된 페이지를 반환해주는게 아닌가 싶어서 질문드립니다. 라우터를 이용하여 페이지를 이동할때는 CSR로 작동하고 url에 직접 경로로 접속 요청을 할때 SSG로 작동하는건가요?? 두 가지 개념이 헷갈립니다

  • react
  • typescript
  • next.js
CLV 댓글 2 좋아요 0 조회수 98

프리패칭에 관한 간단한 질문이 있습니다

해결됨

한 입 크기로 잘라먹는 Next.js

prefetch 를 명시적으로 false 로 설정하면, 예상대로 해당 링크에 대한 프리패칭이 발생하지 않는 것이 확인되었습니다. <Link href={"/search"} prefetch={false}>Search</Link> 그런데 신기한 점은, 해당 링크에 마우스를 호버했을 때 네트워크 탭에서 /search 관련 리소스들이 프리패칭되는 현상이 보였다는 것입니다. 혹시 이러한 동작은 Next.js에서 어떻게 정의되거나 불리고 있는지 궁금합니다!

  • react
  • typescript
  • next.js
정규환 댓글 2 좋아요 0 조회수 106

SSG의 fallback 옵션

미해결

한 입 크기로 잘라먹는 Next.js

SSG의 fallback 옵션에 따른 렌더링 방식에 대해 좀 더 구체적으로 알고 싶습니다. fallback: "blocking" 일 때, 빌드 타임에 사전 생성하지 않았던 경로에 대해서, 이후 접속 요청이 들어와 사전 렌더링되고, .next 서버에 저장되는 걸 확인했는데요. 1) 저장되는 걸 캐싱이라고 이해해도 될까요? 2) 그러면 그 이후의 요청에서는 더이상 재생성되지 않고, 이 페이지를 클라이언트에게 전달 하나요? fallback: true 일 때, 빌드 타임에 사전 생성하지 않았던 경로의 접속이 들어왔습니다. 그 때, getStaticProps로 불러오는 데이터를 제외하고, 먼저 레이아웃을 내려준다고 이해했습니다. 그리고 추후에 Props만 따로 반환받아 페이지를 렌더링한다고 했는데, 그럼 받은 데이터를 가지고, CSR이 되는 건가요? 위 상황에서 CSR이 맞다면, 해당 내용은 검색 크롤러가 알아내지 못해 SEO에 불리할 것 같은데요. 아니면 검색 크롤러가 getStaticProps 데이터가 올때까지 기다리고 해당 내용도 반영해서 문제가 없나요? 감사합니다.

  • react
  • typescript
  • next.js
Gyuri Kim 댓글 1 좋아요 0 조회수 105

수업내용의문

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

안녕하세요 [CSS 09-2-3] 폰트 - 폰트와 크로스브라우징 강의 마지막에 다음강의에 안내된 그림,차트 모달 관련 강의가 없습니다. 섹션 09 => [JS 09-1-1] 수업내용이 [ CSS 09-1-1] 과 같습니다. 중복업로드된것이 아닌지요 ?

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
Lia 댓글 2 좋아요 0 조회수 98

색션1 예제 코드 질문드립니다.

해결됨

Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

안녕하세요, Next.js 라우팅은 어떻게 구현 했을까? 색션에서 예제코드 주소를 알 수 있을까요?

  • react
  • typescript
  • next.js
dgh12 댓글 1 좋아요 0 조회수 224

nextjs 15버전 사용 가능할까요?

미해결

[리뉴얼] React로 NodeBird SNS 만들기

영상하고 15버전하고 차이가 좀 있는거 같습니다

  • react
  • redux
  • node.js
  • express
  • next.js
ik5334 댓글 1 좋아요 0 조회수 173

인기 태그

인프런 TOP Writers

주간 인기글