inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

리액트와 next의 js번들시 질문

해결됨

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

안녕하세요 강사님 좋은 강의 감사드립니다. 몇 가지 헷갈리는 점이 있어 질문드립니다. React (CSR)에서는 js Bundle시 요청 페이지 뿐만 아니라 모든 페이지의 자바스크립트 파일과 컴포넌트들을 불러오는 반면, Next (SSR)에서는 js Bundle시 모든 페이지가 아닌 요청페이지의 파일과 컴포넌트들을 불러온다. 제가 이해한 게 맞을까요? 2. 프리 페칭 시점은 js bundle후 -> 페이지에 접속한 후 -> "프리페칭" 이 시점이 맞을까요? (프리페칭 시점에 현재 페이지에서 이동할 수 있는 모든 페이지들의 자바스크립트를 사전에 불러온다.) 3. next에서 js bundle시 요청페이지의 파일을 불러온다고 했는데, 요청페이지의 파일은 _app.tsx를 기준으로 하나요?

  • react
  • typescript
  • next.js
김건희 댓글 1 좋아요 0 조회수 257

강의 자료 내용 확인 부탁드립니다.

해결됨

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

안녕하세요. 수강생 입니다. 좋은 강의 잘 수강하면서 열심히 공부하고 있습니다. 노션 페이지 내용 관련으로 문의드립니다. [입문] 시작은 프리캠프 - 섹션 3 CSS의 기본과 싸이월드 실습 1 CSS 사용방법 3가지 예시 이미지 중 해당 내용들에 대한 이미지가 이상해 문의 남깁니다. 감사합니다.

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
at k 댓글 1 좋아요 0 조회수 196

백틱

미해결

처음 만난 리액트(React)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 혹시 작은 따옴표와 백틱을 구분하여 사용해야 하나요? 백틱을 써야하는데 작은 따옴표를 쓰면 오류가 나거나 그 반대 상황에서도 오류가 나는 경우가 있을까요?큰 따옴표도 궁금합니다!

  • HTML/CSS
  • javascript
  • react
오키오키 댓글 1 좋아요 1 조회수 137

npm create vite@latest 에러

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

섹션 5 4.2 첫 React App 생성하기 - 3분 3초 npm create vite@latest 입력 시 아래와 같은 에러가 납니다. 예전에 vue 프로젝트를 만들 때도 똑같은 에러가 났는데 구글에 검색하고 생성형 AI에 물어봐도 해결이 안 돼서 질문 드립니다,, 에러 코드: $ npm create vite@latest > npx > create-vite npm error code 3221225477 npm error path C:\Onebite_React npm error command failed npm error command C:\WINDOWS\system32\cmd.exe /d /s /c create-vite npm error A complete log of this run can be found in: C:\Users\조현희\AppData\Local\npm-cache\_logs\2024-12-20T17_22_12_873Z-debug-0.log /c/Program Files/nodejs/npm: line 65: 1280 Segmentation fault "$NODE_EXE" "$NPM_CLI_JS" "$@"

  • javascript
  • react
  • node.js
nansae0804 댓글 1 좋아요 0 조회수 750

강의 자료 내용 맞는지 확인 부탁드립니다.

해결됨

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

[입문] 시작은 프리캠프 - 섹션 2 HTML과 기술스택 이해하기 노션 페이지 내용 중 종속태그 예시 부분의 이미지에 태그 내용은 없고 글자만 표기되어 있습니다. 이 부분이 오류인지 확인 부탁드립니다.

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
at k 댓글 1 좋아요 0 조회수 148

Mac vercel 권한 / 스크립트 오류 시 해결법

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

윈도우 해결법은 있는데, Mac 해결법은 없는 것 같아서 공유 합니다. 터미널에 아래 명령어 입력하시구, mkdir ~/.npm-global export NPM_CONFIG_PREFIX=~/.npm-global export PATH=$PATH:~/.npm-global/bin echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=$PATH:~/.npm-global/bin" >> ~/.bashrc npm install -g vercel 입력하시면 정상 설치됩니다~!

  • javascript
  • react
  • node.js
지훈 댓글 1 좋아요 1 조회수 96

서버 컴포넌트에서 API 호출 시 Supabase의 클라이언트/서버 클라이언트 차이점이 궁금합니다.

해결됨

Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)

강의를 듣다가 궁금한 점이 생겨서 질문드립니다. 브라우저에서 실행되는 코드에서는 브라우저 클라이언트를 사용하고, 서버에서 실행되는 코드에서는 서버 클라이언트를 사용합니다. - [ Creating a Supabase client for SSR ]( https://supabase.com/docs/guides/auth/server-side/creating-a-client?queryGroups=framework&framework=nextjs&queryGroups=environment&environment=client#create-a-client ) @supabase/ssr 라이브러리를 사용해서 2가지 유형의 클라이언트를 생성합니다. 클라이언트 컴포넌트 클라이언트(createBrowerClient) - 브라우저에서 실행되는 클라이언트 컴포넌트에서 Supabase에 접근 서버 컴포넌트 클라이언트(createServerClient) - 서버에서만 실행되는 서버 컴포넌트, 서버 액션 및 라우트 핸들러에서 Supabase에 접근 서버 컴포넌트로 동작하는 page 컴포넌트에서 각 클라이언트를 사용해 번갈아 API 호출을 해봤는데 동일하게 작동하는 것 같았습니다. 서버 컴포넌트에서 Supabase의 클라이언트/서버 클라이언트가 동작하는 방식의 차이가 있는지, 렌더링 방식에 차이가 있는지 궁금합니다. 서버와 클라이언트 개념과 렌더링 방식(SSR, CSR)이 자꾸 혼동되어 헷갈리네요.. import { getTodos as getTodosClient } from '@/apis/todos'; import { getTodos as getTodosServer } from '@/actions/todos'; export default async function page() { const todos = await getTodos...(); } // todos.ts import { createBrowserSideClient } from "@/lib/client/supabase"; export const getTodos = async() => { const supabase = await createBrowserSideClient(); const result = await supabase.from("todos").select("*"); return result.data; } // todos.action.ts import { createServerSideClient } from "@/lib/server/supabase"; export const getTodos = async() => { const supabase = await createServerSideClient(); const result = await supabase.from("todos").select("*"); return result.data; }

  • react
  • 클론코딩
  • next.js
  • supabase
seong2 댓글 2 좋아요 0 조회수 366

새 프로젝트 생성시 빌드 에러가 뜹니다

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

어제까지도 같은 디렉토리에 토이 프로젝트 새로 생성하면서 잘 진행하고있는데, 오늘 카운터앱 진도 나가면서 새로운 프로젝트 생성하는데, 생성하고 빌드시 이런 에러가 뜹니다. { "name": "section06", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint .", "preview": "vite preview" }, "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@eslint/js": "^9.17.0", "@types/react": "^18.3.17", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "eslint": "^9.17.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.16", "globals": "^15.13.0", "vite": "^6.0.3" } } package.json이구요 버전 체크 전부 해봤는데 어제 만든 잘 작동되는 프로젝트랑 아예 버전 차이도 없고, 생성후에 npm install 외에 아예 건든것도 없는데 npm run dev또는 npm run build 하면 저런 에러가 뜨네요.. 새로 다시 만들어도 에러고, 다른 디렉토리에 만들어봐도 똑같습니다. 이거땜에 1시간은 날린거같은데, 이럴 경우에 어떻게 해결해야하는게 좋을까요??

  • javascript
  • react
  • node.js
shion002 댓글 1 좋아요 0 조회수 157

input에 value 속성에 대해 질문드립니다!

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요! 이번 강의 4분 10초에 나오는 state 값 content를 사용자에게 값을 입력받는 input의 value로 아래 코드와 같이 작성해주시는 이유는 무엇일까요?? value는 어떤 용도로 사용되며 content를 넣어주면서 어떤 변화가 생기는건지 이해가 잘 안되어서 질문드립니다! <input value={content} placeholder="새로운 Todo..." />

  • javascript
  • react
  • node.js
황서영 댓글 1 좋아요 0 조회수 159

useMemo 강의 부분에 대해 질문있습니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

현재 useMemo에 대한 강의를 보고 있습니다. 강의를 볼 땐 어느 부분의 코드가 계속 렌더링이 되기 때문에 불필요한 부분이라 최적화를 해주기 위해 useMemo를 사용한다라고 이해는 하지만 막상 혼자 어떤걸 만들어볼땐 어느 부분의 코드가 계속 렌더링이 되고 불필요한 코드인지 몰라 useMemo를 이용하기가 많이 어렵더라구요. 어떻게 하면 쉽게 이해해서 혼자 코드를 작성할 때 잘 이용할 수 있는지 궁금합니다 ^^

  • javascript
  • react
  • node.js
부드러운 족제비 댓글 1 좋아요 0 조회수 145

페이지라우터와 앱라우터의 데이터 패칭 방식의 차이에 관한 질문.

해결됨

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

해당 강의에서 선생님이 설명해주시기로는, 페이지라우터와 앱라우터의 차이로 인해 앱 라우터 버전에서는 리퀘스트 메모이제이션이 생겼다고 하셨습니다. 페이지라우터에서는, 트리의 최상단에서 api요청이 발생한다음에 해당 결과값을 각 컴포넌트에 나눠주는 구조이고, 앱 라우터는 모든 서버컴포넌트가 각각 api를 호출해야하는 구조라고 하셧는데, 제가 테스트 해본결과, 서버컴포넌트 끼리도 props로 데이터를 주고받을 수 있는것 같습니다. 그래서 햇갈리는 부분이 존재하는데요. import "./globals.css"; import Link from "next/link"; import style from "./layout.module.css"; import { BookData } from "@/types"; function InnerFooter({ books }: { books: BookData[] }) { return <>{books[0].author}</>; } async function Footer() { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book` ); if (!response.ok) { return <footer>제작 @winterlood</footer>; } const books: BookData[] = await response.json(); const bookCount = books.length; return ( <footer> <footer>제작 @winterlood</footer> <div>{bookCount}개의 책이 존재함</div> <InnerFooter books={books} /> </footer> ); } export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( <html lang="en"> <body> <div className={style.container}> <header> <Link href={"/"}>📚 ONEBITE BOOKS</Link> </header> <main>{children}</main> <Footer /> </div> </body> </html> ); } 제가 테스트 한 코드에서는 Footer 컴포넌트가 내부적으로 InnerFooter 컴포넌트를 호출하면서 데이터를 넘겨주고 있습니다. 선생님이 설명하신 부분이 제가 이해한 부분과는 다른걸까요?

  • react
  • typescript
  • next.js
2Digit APP 댓글 1 좋아요 0 조회수 191

리액트 라이프 사이클 질문

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

글 수정기능을 추가하고 useReducer로 바꿔서 했는데 글을 추가해도 새로운 내용이 나타나지 않고, 마지막 요소가 다시 추가되었습니다. [{content:"To1"}, {content:"To1"}] 확인해보니 컴포넌트에서 받은 props를 useState초기화값으로 넣으면 바뀌지 않는 사실을 알게되었습니다. 하지만 이부분을 useEffect형식으로 바꿔 적어주니 새로운 내용으로 바뀌는 것을 확인했습니다. // props content를 useState 초기화값으로 적용 const TodoItem = ({ content, id, isDone, date, onUpdate, onDelete }) => { const [upContent, setUpcontent] = useState(content); ... } //////////////////////////////////////////// // useEffect 적용 const TodoItem = ({ content, id, isDone, date, onUpdate, onDelete }) => { const [upContent, setUpcontent] = useState(""); useEffect(() => { if (content) { setUpcontent(content); } }, [content]); ... } useReducer를 적용하지 않을때 props를 useState초기화값을 넣어도 잘 구동되었습니다. // props content를 useState 초기화값으로 적용 const TodoItem = ({ content, id, isDone, date, onUpdate, onDelete }) => { const [upContent, setUpcontent] = useState(content); ... } 이것이 리액트 라이프 사이클 때문에 이러한 현상이 발생한것인가요?

  • javascript
  • react
  • node.js
HK 댓글 2 좋아요 0 조회수 189

새버전 강의

해결됨

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

주기적으로 업데이트한다고 강의 소개에 크게 적어놓으셨는데, 왜 2023년 초 이후로 업데이트가 없나요? 그리고 새로운 버전 강의가 나왔던데, 이전 버전 수강자들에게는 무료로 제공되나요? 이 강의가 저렴한 것도 아니고 몇십만 원이나 하는데, 그 정도 보상은 해주셔야 한다고 생각합니다.

  • react
  • node.js
  • seo
  • graphql
  • next.js
King_God_0 댓글 2 좋아요 4 조회수 230

신규강의가 비슷하게 나왔던데...

해결됨

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

기존에 프론트엔드 강의 수강생들에 대한 혜택은 없는건가요?? 거기는 이제 업데이트 안되는건가요?? 아 너무한데.....

  • react
  • node.js
  • seo
  • graphql
  • next.js
musful 댓글 2 좋아요 3 조회수 280

input 태그 value문제 해결 방법

해결됨

한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지

초기값이 '' 이여서 강의에서는 value 값을 맨뒤로 넣고 input 태그에 닫힘을 작성하지 않음으로, 동작하게 하였는데 다른 방법으로는 <input type="text" placeholder="Search" id="search" value="${searchWord}" autocomplete="off"/> 로 작성하였습니다, value 를 싱글쿼터나 더블쿼터로 감싼다음 ${} 를 사용하시면, 뒤에다가 다른 속성을 넣거나 닫아도 정상 동작합니다. 참고 하실분 참고하셔도 좋습니다.

  • javascript
  • rest-api
  • spa
  • dom
hollis9797 댓글 1 좋아요 0 조회수 219

useReducer로 투두리스트 업그레이드 부분 질문있습니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요 현재 useReducer를 이용하여 투두리스트 업그레이드 부분중에 몇가지 질문이 있습니다. useReducer에 대해서 어느정도 이해는 했지만 dispatch는 어느 부분에 작성을 해야되는지 조금 헷갈리는데 이 강의에서는 onCreate 함수안에 dispatch를 작성했는데 이 함수에 dispatch를 사용한 이유가 조금 헷갈립니다. 그리고 useRudcer는 비슷한 기능을 하는 함수들을(업데이트, 삭제) 좀 더 간단하게 만들기 위해 사용한다라고 이해하고 있으면 되는지도 궁금합니다. 마지막으로 리덕스와 조금 비슷한것같은데 useReducer와 리덕스는 완전 다른 개념인건가요?

  • javascript
  • react
  • node.js
부드러운 족제비 댓글 2 좋아요 0 조회수 229

리액트 쿼리를 활용한 SSR으로 데이터 조회하기

해결됨

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

안녕하세요! 제가 강의를 모두 수강하고 프로젝트에서 리액트 쿼리를 통해 SSR을 적용하려고 하고 있습니다. 아래 코드는 fetchAPISever 함수를 통해 백엔드 api로부터 데이터를 요청하는 함수입니다. 이때 fetchAPIsever 함수는 next/header 의 cookies() 를 통해 사용자의 토큰이 있으면 토큰을 넣어서 api를 요청하는 함수입니다. export const getBestAndPendingReviews = async (): Promise<ReviewePageResponse> => { const res = await fetchAPIServer('/api/review', 'GET'); if (res.code === 'SUCCESS') { return res.result; } throw new Error( `리뷰 페이지 데이터 불러오기 실패 ${res.code}-${res.message}`, ); }; 아래 코드는 리뷰 페이지에서 서버 사이드 렌더링으로 보여주기 위해 리액트 쿼리로 Hydration을 적용한 코드입니다. // src\app\reviews\page.tsx import { HydrationBoundary, QueryClient, dehydrate, } from '@tanstack/react-query'; import ReviewDashboard from './_components/ReviewDashboard'; import { getBestAndPendingReviews } from './_lib/getBestAndPendingReviews'; export default async function ReviewsPage() { const queryClient = new QueryClient(); await queryClient.prefetchQuery({ queryKey: ['reviews', 'best'], queryFn: getBestAndPendingReviews, }); const dehydrateState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydrateState}> <ReviewDashboard /> </HydrationBoundary> ); } ' <ReviewDashboard/> 컴포넌트에서 UserInfo 컴포넌트를 반환하도록 설정하고 useQuery 훅을 사용하려 했으나, fetchAPIServer 함수에서 next/headers 를 import하고 있어서 클라이언트 컴포넌트에서 사용할 수 없다는 에러가 발생했습니다. 그러면 SSR을 적용하기 위해서는 getQueryData 를 사용해야하는 걸까요..? import { QueryClient } from '@tanstack/react-query'; import { ReviewePageResponse } from '../_lib/getBestAndPendingReviews'; export default function UserInfo() { const queryClient = new QueryClient(); const reviews = queryClient.getQueryData<ReviewePageResponse>([ 'reviews', 'best', ]); const { total } = reviews!; if (!reviews) return <p>리뷰가 없습니다.</p>; console.log('reviews', reviews); return <p>작성한 리뷰 {total || 0}</p>; } 또는 useQuery를 쓰되 쿼리 함수를 Promise.Resolve()로 서버에서 전달 받은 데이터를 받는게 나은가 요? 'use client'; import { useQuery } from '@tanstack/react-query'; export default function UserInfo() { const { data: reviews, isLoading } = useQuery({ queryKey: ['reviews', 'best'], queryFn: () => Promise.resolve(), // 서버 데이터 재활용 }); if (isLoading) return <p>Loading...</p>; if (!reviews) return <p>리뷰가 없습니다.</p>; const { total } = reviews!; console.log('reviews', reviews); return <p>작성한 리뷰 {total || 0}</p>; }

  • react
  • next.js
  • react-query
  • next-auth
  • msw
 키키 댓글 2 좋아요 0 조회수 304

Vue 개발자도구 timeline에 No events라 뜨는 문제

미해결

Vue 3 시작하기

버튼 클릭을 해 이벤트를 발생시켰음에도 불구하고 개발자도구에는 No events라고 뜹니다. Timeline에서 record 버튼 눌러 record on 했음에도 마찬가지입니다. 해결방법을 아실까요? ㅠㅠ

  • javascript
  • vue.js
  • devtools
김지우 댓글 1 좋아요 0 조회수 179

투두리스트 content 수정 기능 추가 문의

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

투두리스트를 만들고 있는데 여기서 만약 삭제버튼 옆에 수정버튼을 추가하여 todo list에 입력한 content 내용을 수정할 수 있는 기능을 추가하려면 todolist 내용 요소를 div요소에서 input text 요소로 바꾸고 보이기는 input value사용하고, 수정은 OnChange 이벤트를 사용하면 될까요?

  • javascript
  • react
  • node.js
HK 댓글 2 좋아요 0 조회수 198

인기 태그

인프런 TOP Writers

주간 인기글