묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
에러 핸들링 실습 예제
안녕하세요!6.5 에러 핸들링 강의를 들으며 실습을 진행하고 있는데브라우저에 http://localhost:3000을 접속하면 "지금 추천하는 도서"에 캐시를 사용안하는데 데이터가 조회가 되고 있습니다. 코드를 잘못적었을까봐 깃허브에 올려주신 소스로 개발서버 실행해도 같은 상황입니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
풀라우트캐시 3강. book/4를 URL로 요청시 렌더링 과정
안녕하세요 선생님, 질문이 있어서 남깁니다.만약 book/4를 URL로 요청하면 과정이 URL로 book/4 요청 시 Link 등이 없으므로 프리페칭은 안됨- 서버에서 JS 실행 (렌더링)- 렌더링 된 HTML 브라우저에 넘김- 브라우저에서 화면에 렌더링- 서버에서 JSBundel, RSC payload 브라우저에 넘김- 수화과정- 상호작용 가능 이게 맞나요? book/1~3은 staticPage로 풀라우트캐시되어있으니URL로 요청하면 풀라우트캐시에서 바로 HIT해서 주는거고요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
suspense관련 질문 있습니다! 섹션6 5.2풀 라우트 캐시2강의
안녕하세요! 강의 잘 듣고 있습니다! suspense태그 관련 질문이 있습니다! 5.2 풀 라우트 캐시2 강의에서 저희가 useSearchParams() 훅이 빌드타임에서 실행되는 오류를 없애기 위해 <SearchBar/ > 컴포넌트를 suspense로 감싸잖아요 이때 강의 4분45초 쯤에서 사전 suspense를 사용해서 이제 사전 렌더링 과정에서 완전히 배제한다고 하셨는데, 그러면 페이지를 만들때 suspense로 감싼 컴포넌트는 nextjs app router방식이 아니라 csr방식으로 구현이 되는건가요 나머지 컴포넌트들만 approuter의 사전 렌더링 방식으로 구현이 되는건가요?? 제가 정리했을땐 동적 페이지도 정적 페이지도 사전렌더링의 시점은 다르지만 (요청할때, 빌드할때) 사전렌더링이라는 기능은 nextjs에서 기본으로 작동한다고 알고 있습니다! 그래서 사전렌더링에서 완전 배제된다는 부분이 헷갈려서 질문 남깁니다!
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
컴포넌트 단위 에러 처리는 이전 처럼 에러 바운더리를 래핑하면 되나요?
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)질문 하실때 꼭 확인하세요- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
params부분 에러
fetch 부분에서 다음과 같이 작성하였는데 params.id부분에서 id 부분에Property 'id' does not exist on type 'Promise<{ id: string | string[]; }>'.ts(2339)이러한 에러가 발생합니다. const result = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${params.id}` );
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
캐싱 옵션이 적용되질않아요.
어떠한 옵션을 적용해도 콘솔과 같은데 뭐가 잘못되었을까요?새로고침이나, 로고를 눌러서 인덱스 파일에 가도 똑같은 로그만 나타납니다.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
react-beatiful-dnd에서 문제가 발생합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 기능상에 문제가 있는건 아니지만, 계속해서 아래의 에러가 발생합니다.사용하고 있는 버전의 문제일까요?{ "name": "react-todo-app", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", "@testing-library/react": "16.2.0", "@testing-library/user-event": "13.5.0", "react": "^19.0.0", "react-beautiful-dnd": "13.1.1", "react-dom": "^19.0.0", "react-scripts": "5.0.1", "web-vitals": "2.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "autoprefixer": "10.4.20", "postcss": "8.5.3", "tailwindcss": "3.4.17" } } Lists.jsimport React from 'react'; import List from './List.js' import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'; const Lists = React.memo(({todoData, setTodoData}) => { // console.log('Lists Component') const handleEnd = (result) => { if(!result.destination) return; const newTodoData = Array.from(todoData); const [reorderedItem] = newTodoData.splice(result.source.index, 1); newTodoData.splice(result.destination.index, 0, reorderedItem); setTodoData(newTodoData); } return <div> <DragDropContext onDragEnd={handleEnd}> <Droppable droppableId='todo'> {(provided, snapshot) => ( <div ref={provided.innerRef} {...provided.droppableProps} > {(todoData ?? []).map((data, index) => ( <Draggable key={data.id} draggableId={data.id.toString()} index={index} > {(provided, snapshot) => ( <List key={data.id} id={data.id} title={data.title} completed={data.completed} provided={provided} snapshot={snapshot} todoData={todoData} setTodoData={setTodoData} /> )} </Draggable> ))} {provided.placeholder} </div> )} </Droppable> </DragDropContext> </div>; }) export default Lists; App.jsimport React, {useState} from 'react' import "./App.css" import Lists from './components/Lists' import Form from './components/Form' export default function App() { // console.log('App Component') const [todoData, setTodoData] = useState([ { id: 1, title: '운동하기', completed: false, }, { id: 2, title: '공부하기', completed: false, } ]) const [value, setValue] = useState("") return ( <div className="flex items-center justify-center w-screen h-screen bg-blue-100" > <div className='full p-6 m-4 bg-white rounded shadow md:w-3/4 md:max-w-lg lg:w-3/4 lg:max-w-lg'> <div className="flex justify-between mb-3"> <h1>할 일 목록</h1> </div> <Lists todoData={todoData} setTodoData={setTodoData} /> <Form value={value} setValue={setValue} setTodoData={setTodoData}/> </div> </div> ) }
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
Error: Route "/search" used `searchParams.q`. `searchParams` should be awaited before using its properties.
안녕하세요 강사님해당 오류는 최신버전에서 발생하는건가요?! Error: Route "/search" used searchParams.q. searchParams should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis at Page (src/app/(with-searchbar)/search/page.tsx:12:32) 10 | return ( 11 | <div>> 12 | Search 페이지 : {searchParams.q} | ^ 13 | <ClientComponent> 14 | <></> 15 | </ClientComponent>import ClientComponent from "@/components/client-component"; export default function Page({ searchParams, }: { searchParams: { q?: string; } }) { return ( <div> Search 페이지 : {searchParams.q} <ClientComponent> <></> </ClientComponent> </div> ) }
-
미해결Next + React Query로 SNS 서비스 만들기
router.replace를 하는데 setCurrent에서 변경한 상태가 유지?
라우터가 이동하면 상태가 초기화 됐던걸로 아는데, setCurrent는 왜 계속 유지가 되나요? 쉘로우 라우팅도 아닌데,,, 제가 잘못알고있나요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
next 에러 로그 관련 질문
현재 RecoBooks 함수 정의가 위와 같고, 3초마다 캐시를 업데이트하는 속성이 설정되어 있습니다.그런데 저는 강사님처럼 error 노출이 되지 않고 캐시되어 있는 동일한 랜덤 도서 목록이 계속 나오고 있습니다. 아래는 npm run dev로 실행했을 때 나온 로그입니다. 여기서 하나 더 궁금한게 있는데현재 전체 도서 목록을 불러오는 fetch 함수는 요청한 결과를 무조건 캐싱하는 속성이 설정되어 있습니다.그런데 제 로그를 보면 http://localhost:12345/book 이 api가 두 번 호출되고 있습니다. request memoization이 호출이 안되는 거 같은데 데이터 캐시가 우위적으로 호출되는 건가요??
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
한 달이 좀 넘게 지났는데, 아직 강의 영상은 안올라오는건가요?
보니까 해당 강의 영상이 내려간게 1월 14일 같은데... 아직까지 소식이 없는건가요...?
-
미해결[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
node_modules에서 export 오류
수업과 같이 npm에 배포하고 제가 만든 ui를 다운받아 import하는 과정에서해당 이미지와 같이 node_modules에서 export가 나타납니다.1) lib파일과 index.ts파일을 myapp 폴더로 직접 import했을때는 정상적으로 작동하였습니다.2) 해당 수업에서 codecamp-ui가 npm 사이트에 아직 배포중이기에 그것도 시험삼아 다운받아서 import하였지만 똑같은 오류가 나타났습니다.3) node_modules 파일 삭제하고 다시 yarn install로 다운받았지만 같은 오류가 나타났습니다.그 전 수업까지는 동일하게 오류없이 진행했습니다. 무엇이 문제일까요?
-
미해결Next + React Query로 SNS 서비스 만들기
next-auth 사용 이유
안녕하세요. 백엔드에서 connect.sid 쿠키와 next-auth의 auth.js-session-token을 사용해서 유저 인증을 하는 것 처럼 보입니다. 프론트서버에서 유저가 접근 시 세션 쿠키(connect.sid)를 받아 백엔드에 유저 세션을 확인한다면 next-auth를 사용하지 않아도 되는 것처럼 보입니다. 백엔드에서 auth.js-sessoin-token으로 유저 인증을 한다면 역시 세션 쿠키(connect.sid)가 필요없는 것처럼 보입니다.connect.sid와 auth.js-session-token 쿠키를 모두 사용해야 하는 이유가 있을까요? 만약 둘 다 사용하는게 좋다고 한다면 동기화가 필요할 것 같은데(만료 시간, 세션 무효화 등..), 이건 어디서 어떻게 처리하는게 좋을까요?(예외 질문) connect.sid의 쿠키에 httpOnly 옵션이 false여도 괜찮은가요? 혹시 백엔드에서 connect.sid의 쿠키를 httpOnly로 보냈다면 쿠키파싱이 제대로 안된 것 같습니다. 아래 모듈로 쿠키파싱하면 되는 것 같습니다. 혹시나하고 남겨봅니다. //현재 코드 //import cookie from "cookie"; //const parsed = cookie.parse(setCookie); import { parseSetCookie } from "next/dist/compiled/@edge-runtime/cookies"; const parsed = parseSetCookie(setCookie);
-
미해결Next + React Query로 SNS 서비스 만들기
cache: "force-cache" 질문이 있습니다.
const res = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/posts/recommends?cursor=${pageParam}`, { next: { tags: ["posts", "recommends"], }, //cache: "force-cache", } );'/home'에서 포스팅 로딩 시또는 새로고침 시에 데이터를 최초 조회하는 시점에서cache: "force-cache"를 제거하면 포스팅이 노출되고포함하면 포스팅이 안 나오는 현상이 있는데어떤 이유인지 의심 가는 부분을 못 찾겠어서 질문 드립니다. cache: "force-cache" 주석처리데이터 존재 cache: "force-cache"빈 배열
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
백엔드 서버 세팅 오류
안녕하세요! https://www.inflearn.com/community/questions/1528169이 분과 똑같은 오류가 발생하는데요!혹시 해결된 방안이 있을까요,,? 어디서 확인할수있을까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
한입 Next는 따로 PDF 교안이 제공되지 않나요?
한입 Next는 따로 PDF 교안이 제공되지 않나요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
on-Demand-ISR 사용질문드립니다!
안녕하세요! on demand isr 의 실제 사용 관련해서 질문 드려요!const revalidate = async () => { try { const response = await fetch("/api/revalidate"); const result = await response.json(); if (result.revalidate) { //페이지 갱신이 됐을 때 } else { //페이지 경신 안됐을 때 } } catch (error) { //에러처리 } };특정 조건에 따라 on demand isr을 제대로 사용하려면 이런식으로 저희가 만든 api를 호출하는 비동기 함수를 만들어서 특정 조건문 아래에서 이 새로만든 함수를 호출하면 되는걸까요?? 감사합니다!
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
useEffect 경고
안녕하세요! 섹션3 2.14)SSG2.정적 경로에 적용하기 강의 17분23초에서 useEffect 의존성 배열 관련해서 React Hook useEffect has a missing dependency: 'fetchSearchResult' 라고 이 함수를 의존성 배열에서 빠트렸다고 경고가 저도 나왔는데 여기서 함수를 의존성 배열에 꼭 넣어야 하는건가요?? 감사합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
완벽한 프론트엔드
고농축 프론트엔드 강의와 완벽한 프론트엔드 강의 커리큘럼이 차이가 많이 날까요?추가된 강의 공지는 읽어봤는데 기존의 기본적인 리액트 내용에서 업데이트가 많이 되었다던가 등 차이가 많이 나는지 궁금합니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
npm run seed 에러
안녕하세요!섹션2의 1.3 강의를 보며 초기 데이터 설정을 진행하고 있는데 에러가 발생했습니다.npx prisma db push를 실행시켜서 테이블이 생성된 것을 확인하였고 npm run seed를 실행시키니 에러가 발생하게 되었습니다. 구글링해도 잘 모르겠어서 질문드립니다.