묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
메세지를 전송하면 DB에는 남는데 화면에 보이지 않아요.
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다.💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 제목 그대로 DB에는 채팅이 잘 남고 있는데 화면에는 보이지 않습니다 console로 찍어봐도 빈배열을 반환하는데 이유가 뭘까요?? 강의를 돌려보고 gpt를 써도 원인을 못찾겠어요. 제가 생각했을때 채팅 목록을 나타내는 코드를 캡쳐해서 보내고 현재까지 문제생긴 부분을 커밋해둘테니 캡쳐사진으로 확인이 안되시면 제 깃헙에서 확인해주세요!깃헙 링크
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
2.8 페이지별 레이아웃 질문있습니다!
2.8 페이지별 레이아웃을 설정하는 방법을 듣고있는 학생입니다!getLayout이란 메서드를 레이아웃을 적용할 컴포넌트 객체에 생성해서 _app.tsx 파일에서 메서드를 통해 레이아웃을 적용시키는 방법이라는건 이해했습니다.그런데 여기서 궁금했던 점이특정 레이아웃을 적용하기 위해 페이지 마다 따로 코드를 작성해줘야 하는 방식이라면그냥 레아이웃 컴포넌트를 적용시킬 컴포넌트의 최상위 요소로 감싸주는게 app.tsx에 추가로 코드를 작성할 필요도 없어 더 좋지 않나요?그리고 리액트 라우터에서는 특정 레이아웃을 적용시킬 컴포넌트들을<Route element={<Layout/>}><Route/> 이런 path가 없는 컴포넌트 안에서 감싸주는 방식을 사용하는걸로 알고 있습니다.지금 배우는 방식보다 더 직관성이나 코드 길이 등에서 리액트 라우터가 더 좋은거 같은데 Next는 페이지별 레이아웃 설정방식이 getLayout로 설정하는것 밖에 없는건가요?유지보수 할 때 특정 레이아웃이 적용된 페이지를 찾기 위해 getLayout을 사용한거라 보기에도 뭔가 애매하게 느껴지고 app.tsx에서 타입을 추가로 만들어줘야 해서 코드가 더 복잡해 보이는거 같습니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
동적 함수(쿠키, 헤더, 쿼리스트링)을 사용하는 컴포넌트를 SSG로 바꾸려면 어떻게 해야할까요?
안녕하세요!이번 강의에서 동적 함수(쿠키, 헤더, 쿼리스트링)을 사용하는 컴포넌트가 포함된 페이지는 다이나믹 페이지라고 이해했습니다. 글을 찾아보니 middleware 에서 쿠키를 처리할 수 있다고 했습니다.찾아보니 Middleware에서 쿠키를 처리할 수 있다는 글을 봤는데, 이를 활용하면 동적 함수의 영향을 제거하여 정적 페이지로 만들 수 있는지 궁금합니다.또한, 클라이언트 컴포넌트 측으로 뺴면 정적인 페이지로 만들 수 있는지 궁금합니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
"클라이언트 컴포넌트 안에, 서버 컴포넌트를 import 할 수 없다"는 주의 사항에 대해 궁금한 점이 있습니다
안녕하세요.클라이언트 컴포넌트 안에, 서버 컴포넌트를 import 할 수 없다라는 주의 사항에 대해 궁금한 점이 있습니다.Next.js 공식문서에는 아래와 같이 클라이언트 컴포넌트 안에 서버 컴포넌트를 직접 Import해 사용할 수 없다고 나와 있는데요.공식문서강의에서 실습했을 때는, 클라이언트 컴포넌트 안에서 서버 컴포넌트가 사용되는 경우, 자동으로 클라이언트 컴포넌트로 바뀌는 것을 확인했습니다. 그렇다면,서버 컴포넌트가 클라이언트로 바뀔 수 있는 경우는 해당 패턴을 사용해도 되는 건가요?아래와 같이 서버 컴포넌트의 기능을 사용한다면, 에러는 나지 않지만 fetch 요청이 여러 번 되는 등, 정상적인 동작이 되지 않는 것을 확인했습니다. 이런 경우에 한해 지양하면 될까요?결과적으로, 서버 컴포넌트가 클라이언트 컴포넌트로 바뀔 수 있는 경우, 제대로 동작하지만, 지양하자는 것으로 이해하면 될까요?// 클라이언트 컴포넌트 "use client"; import ServerComponent from "@/components/server-component"; export default function ClientPage() { console.log("클라이언트"); return ( <div> <h1>클라이언트</h1> <ServerComponent /> </div> ); } // 서버 컴포넌트 export default async function ServerComponent() { const res = await fetch("https://jsonplaceholder.typicode.com/todos/1"); const value = await res.json(); console.log(value); return ( <h1>서버 컴포넌트</h1> ); } 감사합니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
빠르게 받아오는 API에 스트리밍을 사용해야 할까요?
안녕하세요!다이나믹 페이지에서 데이터 패칭이 오래 걸리는 문제를 해결하기 위해, Next에서 임시로 로딩 UI를 보여주고, 추후 패칭이 완료되면 스트리밍으로 업데이트하는 것으로 이해했습니다.로딩 UI는 데이터 패칭이 느릴 때 유용하지만, 패칭이 빠른 경우 오히려 깜빡거리는 느낌이 들어 사용자 경험 측면에서 안 좋을 수 있다고 느꼈습니다.물론 제가 생각했을 때 가장 베스트는 API 속도를 측정하여 특정 시간 이상인 경우에 스트리밍 기술을 적용하고, 그 외에는 안하는 것이 좋다고 생각을 했지만, 측정하기도 힘들 뿐더러, 사용자 네트워크도 신경을 써야 하기 때문에 이러한 방법은 어렵다고 생각을 했습니다.이러한 문제에서 강사님의 생각을 듣고 싶어 질문드리게 되었습니다.
-
미해결Copliot은 이제 그만! 2시간 만에 제대로 배우는 Cursor (with Next.js)
윈도우에서 cmd + shift +I 해도 안되는데요 ㅠㅠ
윈도우에서 cmd + shift +I 해도 안되는데요 ㅠㅠ혹 유료기능인가요
-
미해결Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
DBeaver로 supabase connection해보기
Database Settings에서 Connection parameters의 Host 주소를 복사하려고하는데 Connection parameters 자체가 안보이는데 어떻게 하면 좋을까요 ??
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
클라이언트 라우터 캐시에 레이아웃 말고 JS Bundle은 캐싱이 안될까요?
안녕하세요!클라이언트 라우터 캐시 기능에 대해 궁금증이 있어서 질문합니다. 클라이언트 라우터 캐시에 공통적으로 쓰이고 변하지 않는? 레이아웃들을 캐싱한다고 이해했습니다. 제가 궁금한 것은 RSC Payload는 수시로 바뀔 수 있을 것 같아 라우터 캐시에 저장하기 어렵겠지만,JS Bundle은 클라이언트 컴포넌트들로 구성되어 있다면 변하지 않으므로 캐싱해도 되지 않을까 생각을 해봤습니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
풀 라우트 캐시 이후 JS Bundle, RSC Payload도 불러오는지 궁금합니다.
안녕하세요!풀 라우트 캐시 이후 JS Bundle, RSC Payload도 불러오는지 궁금해서 질문해봅니다. Next Link를 통해 페이지를 교체할 때, Next 서버는 JS Bundle과 RSC Payload를 클라이언트로 전송하고, 클라이언트는 이를 적절히 결합하여 페이지를 렌더링하는 것으로 이해했습니다.만약 초기 접속 시 풀 라우트 캐시되어 있는 static html를 불러온 이후, JS Bundle, RSC Payload도 불러오는지 궁금합니다.그리고 초기 접속 시 다이나믹 페이지 또한 html을 불러온 이후, JS Bundle, RSC Payload도 불러오는지 궁금합니다. 제 생각은 불러올 것 같지만, 확실히 알면 좋을 것 같아서 질문드려봅니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
build할 때 type오류에 대한 질문이 있습니다.
안녕하세요!build할 때 계속해서 type 오류가 발생하여 질문 드립니다.현재 page.tsx에는 아래와 같이 작성되어 있습니다.import BookItem from "@/components/book-item"; import { BookData } from "@/types"; export default async function Page({ searchParams, }: { searchParams: { q?: string; }; }) { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/search?q=${searchParams.q}` ); if (!response.ok) { return <div>오류가 발생했습니다...</div>; } const books: BookData[] = await response.json(); return ( <div> {books.map((book) => ( <BookItem key={book.id} {...book} /> ))} </div> ); }근데 여기서 build를 하면 아래와 같은 에러가 발생합니다..next/types/app/(with-searchbar)/search/page.ts:34:29Type error: Type 'Props' does not satisfy the constraint 'PageProps'. Types of property 'searchParams' are incompatible. Type 'Record<string, string | string[]> | undefined' is not assignable to type 'Promise<any> | undefined'. Type 'Record<string, string | string[]>' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag] 32 | 33 | // Check the prop type of the entry function> 34 | checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>() | ^ 35 | 36 | // Check the arguments and return type of the generateMetadata function 37 | if ('generateMetadata' in entry) {Next.js build worker exited with code: 1 and signal: null사실 gpt를 이용하여 받은 코드로 작성해보면 에러를 해결할 수는 있는데 이게 근본적인 해결 방법인지 잘 모르겠고, gpt가 작성한 코드가 잘 이해가 되지 않습니다.우선 gpt에서 받은 답변은 아래와 같습니다.import BookItem from "@/components/book-item"; import { BookData } from "@/types"; export default async function Page({ searchParams }: any) { const qRaw = searchParams?.q; const q = Array.isArray(qRaw) ? qRaw[0] : qRaw ?? ""; const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/search?q=${encodeURIComponent(q)}` ); if (!response.ok) { return <div>오류가 발생했습니다...</div>; } const books: BookData[] = await response.json(); return ( <div> {books.map((book) => ( <BookItem key={book.id} {...book} /> ))} </div> ); }이렇게 하면 해결은 되긴합니다.다만 왜 해결이 되는 건지 이해가 잘 되지 않아서 그런데 왜 자꾸 build할 때 type 오류가 발생하는지 알려주시면 감사드리겠습니다!
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
404에러 문의드립니다
버튼눌러서 게시글 조회하면 404에러뜨는데 뭐가 문제인지 알 수 있을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
tailwindcss 오류관련 문의 드립니다 ㅠㅠ
버젼이 달라서인지.. CNA 했을 때tailwind.config.js 파일이 없었습니다.강의에서는 원래부터 존재하던데..그래서 어떻게어떻게 추가를 했는데.Error: It looks like you're trying to use tailwindcss directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install @tailwindcss/postcss and update your PostCSS configuration.라는 에러가 끝나지를 않네요 ㅠGPT한테 열심히 물어봤는데 도저히 해결이 안돼서 문의드립니다.밑은 제가 설정해둔 코드입니다.tailwind.config.js/** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./src/**/*.{js,ts,jsx,tsx,html,css}", // 필요한 파일들 포함 "./app/**/*.{js,ts,jsx,tsx}", // Next.js의 `app` 폴더 추가 "./components/**/*.{js,ts,jsx,tsx}", // 컴포넌트 폴더 추가 ], theme: { extend: { colors: { 철수가좋아하는색깔: "#3498db", // 나만의 부트스트랩 만들기 영희가좋아하는색깔: "green", }, }, }, plugins: [], }; postcss.config.jsmodule.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, }; globals.css/* @import "tailwindcss"; */ @tailwind base; @tailwind components; @tailwind utilities; 로 해도 안되고,@import "tailwindcss"; 도 안됩니다...
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
저도 tailwind.config.js 가 없네요..
이거 관련해서 한번 정리해주시면 좋을거같습니다. ㅠㅠ인터넷에서 찾아보고 gpt한테도 물어봤는데 해결방법을 못찾겠네요.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
리액트 라우터 관련
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 리액트 학습 중에 궁금한 게 있어서 질문드려요. 기본 path 가 아닌 라우트로 바로 접속을 할때, html을 받으면 라우팅이 이뤄지구 useeffect로 api 요청이 가면서 페이지 렌더링이 이뤄지는건가요?
-
미해결Next + React Query로 SNS 서비스 만들기
getPostRecommend() tags 속성 사용
getPostRecommend() 함수 내부에서tags : ['post', 'recommends']로 설정이 되어있는데, queryClient.prefetch 함수나, useQuery 함수의 queryKey와 항상 동일하게 일치시켜야 하나요? 불러온 데이터를 캐싱할 경우, react-query에서만 관리를 키를 관리해도 되지 않을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
숙제 문의드립니다
require 왜 오류가 나는지 알 수 있을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
2분 44초 질문
무슨말씀이신지 이해가 안가요.ㅠㅠ가운데정렬을 편안하게 해주려면 span 을 이용하는 이유가 와닿지 않습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
homework에 관한 강의는없나용?
homework에 관한 강의는없나용?
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
toJson을 추가하면 [sub].tsx에서 sub를 받아오지 못합니다.
entity에 toJson을 추가하고 내용을 비워놓기만 해도, sub를 받아오지 못합니다.강의에서는 잘 진행되어서 지금 전혀 원인을 알 수 없습니다. 답변 부탁드립니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
SSR은 언제 사용될까요??
안녕하세요!강의를 수강하면서 나날이 성장하는게 느껴집니다!!SSG, SSR, ISR 개념을 배우면서, SSR을 언제 사용해야 하는지에 대한 고민이 생겼습니다.블로그 글이나 GPT의 답변을 참고해보니, 개인화된 사용자 데이터나 요청 시에만 알 수 있는 정보에 의존하는 페이지를 렌더링해야 하는 경우 사용한다고 합니다.저는 조금 다른 접근을 고민해봤습니다.ISR을 활용하여 개인화된 페이지를 생성하고, Middleware에서 사용자 인증을 검증하는 방식으로 생각해봤습니다.또는 SSR 대신 SSG를 사용하고, 클라이언트 측에서 필요한 데이터를 패칭하는 방식으로 생각해봤습니다.정리하자면 SSR은 언제 써야하는지 잘 모르겠습니다.소중한 시간 긴 글 읽어주셔서 감사합니다!!
주간 인기글
순위 정보를
불러오고 있어요