묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
Immer 에서 filter, map 사용
지난강의에서 useImmer에서 활용한 update함수에서는 push, splice와 같은 현재의 객체를 변환시키는 api를 활용했었습니다.그래서 immer 가 적용된 상황에서는, 현재 객체를 변환시키는 것만이 답일것이라 생각해서,오히려 filter api를 써야 코드가 더 간단해지는 상황에서는 useState를 따로 분리해서 써야 고민하고 있었습니다. 그런데 이번 강의에서 useImmerReducer에서 활용하는 것을 보아하니, State가 아니라 Immer 이 적용된 케이스더라도, return으로 새로운 객체를 반환하거나, 직접 객체에 변화를 주거나 하는 방법이 둘다 적용이 되는것으로도 보이는것 같더라구요?case 'deleted':에서도draft.filter에 return 이 적용되면, immerReducer라도 잘 작동하고,return을 없애고, break로 나오게 하면, 변화가 아무래도 적용이 안되더라구요(당연하겠죠... 원래 객체에 변화를 준것이 아니니) 그래서 immer나 immerReducer를 활용한다는 것은 useState을 확장시키는 느낌인건가요? 직접객체에 변화를 주는것 뿐만아니라, useState에서 했던것처럼 새로운 객체를 만들어 return하는 것 '까지' 가능한건가요?만약 immer가 적용된 상황에서, 직접 객체를 변환하는 코드와, 새로운 객체를 만들어 return 하는 코드가 하나에 전부 적용되어 있다면 어떻게 작용하나요?다시 말해, draft.push로 '변경사항이 immer에 반영되고', 동시에return으로 draft.filter한 값을 보내면, 어떻게 작용하며, 어떤 로직이 적용되나요?감사합니다
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
vite 설치에 대해 질문있습니다.
안녕하세요 vite를 설치해서 리액트를 잘 사용하다가 최근 vite를 설치하고 npm run dev로 실행을 하니 아래 이미지와 같은 에러가 계속 나더라구요. 찾아보니 버전과 관련이 되어 있는거 같은데 아무리 찾아봐도 해결이 되지 않더라구요. 현재 vite는 사용하지 못하는건가요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
라이브러리 버전 일치 이슈
npm init vite@5.2.3 를 통해 설치 후 npm i를 통해 필요한 라이브러리를 다운 받을시에, 터미널 창을 통해 각종 경고 안내가 나옵니다.예를 들어 하나만 보여드리자면, npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported입니다.이처럼 온갖 라이브러리들이 '더 이상 지원하지 않는 버전임'을 명시하고 있는데, 최신 버전을 사용해서 수업을 따라가야 하나요, 아니면 '더이상 지원하지 않는 버전'의 라이브러리를 사용해서 코드를 짜도 이상이 없을까요? 안내해주신 것처럼 라이브러리 버전을 맞춰서 수업을 따라가고 싶은데, 터미널에서 이러한 경고를 보여주니, 버전을 맞출시에 '지원하지 않는 버전'문제로 인한 추가적인 오류가 생길까 걱정됩니다. 요약1.터미널에서 말하는 '더 이상 지원하지 않는 버전' 안내를 무시하고, 짐코딩님 강의의 라이브러리 버전을 사용해도 문제가 없을까요?2.최신 버전을 사용하고, 달라진 문법등의 오류를 감당하는게 나을까요?2번 질문의 문제에 대한 기술적인 지원을, 짐코딩님을 통해 받을 수 있을까요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
"Enter 키 발생 시 항목 추가" 부분에서 공백이 포함되면 한 줄이 더 입력됩니다
추가할 todo에 공백이 포함된 상태로 엔터를 입력하면 위와 같이 추가가 되는데 제가 잘못한 부분이 있을까요?https://github.com/juan-rybczinski/learn-react/commit/dba6aab43a96601fed941edfa652e4508f6a88e9
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
4.6강 초기 로딩 속도 케이스 비교
4.6강 초기 로딩 속도 케이스 비교 세가지 케이스를 적어주셨는데 case1, case3이 같은 건가요?제가 이해를 못한 건가 싶어서 세 번 돌려봤는데 같아 보여서요.
-
미해결Next.js App router 기반 Chat GPT 만들기
섹션6 헤더 마크업 - zustand 적용에 오류가 발생합니다
// model.ts import { create } from 'zustand'; type State = { model: string; }; type Action = { updateModel: (model: State['model']) => void; }; const useModelStore = create<State & Action>((set) => ({ model: 'gpt-3.5-turbo', updateModel: (model) => set(() => ({ model })), })); export { useModelStore }; // ModelSelect.tsx 'use client'; import { useModelStore } from '@/store/model'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select'; const MODELS = ['gpt-3.5-turbo', 'gpt-4', 'gpt-4o']; export default function ModelSelect() { const { model: currentModel, updateModel } = useModelStore((state) => ({ model: state.model, updateModel: state.updateModel, })); const handleChange = (selectModel: string) => { updateModel(selectModel); }; return ( <Select value={currentModel} onValueChange={handleChange}> <SelectTrigger className="w-[180px] border-none focus:ring-transparent"> <SelectValue placeholder="모델 선택" /> </SelectTrigger> <SelectContent> {MODELS.map((model) => ( <SelectItem key={model} value={model} disabled={currentModel === model}> {model} </SelectItem> ))} </SelectContent> </Select> ); } 위 코드 적용 결과 아래와 같은 무한반복 에러가 발생합니다. 강의 내용과 비교해 보아도 문제를 찾지 못했습니다 ㅜㅜ
-
미해결[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
Vercel 무료버전 서버속도
강사님 강의 잘봤습니다,개인적으로 만들고 싶은게 있어서 하다가 postgres_changes로 채팅방 기능을 만들어서 배포를 하였는데로컬에서는 평균 속도가 200ms인데vercel 무료로 하니까 1.2s 정도 잡히더라구여그래서 쿼리문제인가 싶어서 컬럼도 필요한것만가져오고 나름대로 최적화를 진행했는데도배포에서만 느려가지고 제가 잘못하고 있나... 그래가지고 무료버전이라서 그런지 궁금합니다.
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
material 붉은 밑줄
이런식으로 저도 그렇고, 로펀님도 그렇고 material 가져올때 붉은 밑줄이 나오는데, 이거 안 나오게 하는 방법이 있나요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
파일 이름이 한글일 때 에러 발생
안녕하세요, 강의 내용대로 했는데 500 에러가 나서 확인해보니 한글로 된 파일일 경우 에러를 내는 상황입니다 ㅜ supabase 스토리지에서는 한글로된 이름을 허용하지 않는것 같은데, 따로 해결방법이 있을까요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
recoil 타입 에러
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다.💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. recoil 이게 next에서 쓸 때에 따로 타입 에러 등 next가 recoil을 못 찾아내는 거 같은데, 강의 진행할때에는 recoil을 쓸거잖아요?이럴때에는 어떻게 해야 하나요? 버전을 낮추어야 하나요? 낮춘다면 어디 버전까지 낮춰야 할까요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
강의 code 올려논 github 있나요 ?
있으면 url 좀 알려주세요.
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
TotalCounter을 작성할때
저는 처음에 과제를 할때 setTotal을 직접 prop으로 내렸는데 handleTotal 을 만들어서 함수로 내려준 이유가 있을까요??차이점과 장단점에 대해서가 궁금합니다. import Counter from "./Counter"; import React, { useState } from "react"; function Main() { const [Total, setTotal] = useState(0); return ( <main> <h2>Main Component</h2> <h1>{Total}</h1> <br /> <br /> <Counter Total={Total} setTotal={setTotal} /> <br /> <br /> <Counter Total={Total} setTotal={setTotal} /> </main> ); } export default Main;
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
drizzle-zod로 변환한 videoUpdateSchema를 z.infer로 추론하면 타입에러가 나타납니다.
'BuildSchema<"update", { id: PgColumn<{ name: "id"; tableName: "videos"; dataType: "string"; columnType: "PgUUID"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; ... 4 more ...; generated: undefined; }, {}, {}>; ... 15 more ...; updatedAt: PgColumn<...>...' 형식이 'ZodType<any, any, any>' 제약 조건을 만족하지 않습니다. 'ZodObject<{ id: ZodOptional<ZodUUID>; title: ZodOptional<ZodString>; description: ZodOptional<ZodNullable<ZodString>>; ... 13 more ...; updatedAt: ZodOptional<...>; }, { ...; }>' 형식에 'ZodType<any, any, any>' 형식의 type, parse, getType, getOrReturnCtx 외 7개 속성이 없습니다.라는 에러 문구가 코드 에디터에 나타납니다.
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
아니... 강의 자료가 없나요?
강의에 쓰신 노션 자료는 따로 안주시나요?? 강의 자료에 todo list 만 있네요? 이게 다인가요?
-
미해결TailwindCSS 완벽 마스터: 포트폴리오부터 어드민까지!
실습에 사용되는 이미지
실습에 사용되는 이미지들 출력이 안되고 있습니다.(e.g. https://via.placeholder.com/400x400.png?text=City)
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
Sidebar & Header 컴포넌트 등 레이아웃 설정 방식
강의에서 레이아웃을 담당하는 Sidebar, Header 컴포넌트를 만들때 Props으로 children을 받고 렌더링 하는 방식으로 만들었는데 이렇게 만든 이유가 있을까요?지금까지 진행한걸 계층별로 생각해보면최상위 Root->Sidebar->Header->... 등 형제 노드는 없고 자식 노드 형태로 계속 깊어지는구조.------------아래의 방법과 비교해서 궁금합니다.아래 코드와 동일하지 않더라도,Sidebar, Header 컴포넌트가 children과 분리된 구조.<body> <Sidebar/> <div> <Header/> <main>{children}</main> </div> </body>
-
해결됨실무에 바로 적용하는 스토리북과 UI 테스트
storybook 프로젝트 세팅 중 궁금한 점이 있습니다.
만약 회사에서 Next.js로 프로젝트를 진행하고 있다고 가정할 때, storybook은 Next.js 프로젝트 내에서 세팅하는 것보다 아예 다른 프로젝트 디렉토리로 만드는 게 나을 것 같다는 생각이 드는데, 어떻게 생각하시나요?! 왜냐하면 특정 디렉토리 내에서 세팅할 경우 해당 프로젝트에서 기존 서비스와 Storybook 프로젝트가 혼재하여 복잡도를 높이고, (이건 추측이지만) storybook 배포 시 특정 디렉토리를 제외해야 할 것 같다고 생각합니다. 그리고 다른 프로젝트 생성 시 또 다시 storybook을 설치하는 것은 비효율적일 것 같습니다. 그래서 아예 다른 프로젝트 디렉토리에서 리액트로 storybook 을 세팅하고 npm 패키지로 업로드 후 install 하여 사용한다고 생각했는데, 제가 생각한 게 맞을까요?
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
폴더구조
해당 영상에서 사용된 폴더구조는 어떤 아키텍처를 따른것일까요?
-
미해결Next.js App router 기반 Chat GPT 만들기
page loading... 이 안보입니다.
안녕하세요. Loading UI & Streaming 강의를 따라 하는데,캐시 비우기 및 강력 새로고침으로 해도 page loading... 이 안보이네요.개발자도구 띄우고 '캐시 비우기 및 강력 새로고침'으로 하면, 개발자도구 > 네트워크 에서 dashboard페이지가 '대기중' 상태이고, 미리보기에서 보이는 내용은 없습니다.route.ts에서 랜덤 지연시간이 지난 후 VSCode 에서 data { data: '4057만에 응답완료!' }라고 뜬 후에 브라우저 개발자도구 > 네트워크에서 dashboard페이지 미리보기를 보면 "루트 레이아웃대시보드 레이아웃 page loading..." 이라고 보이는데, 지연시간이 지난 후이라서 그런지 브라우저 상에서는 "루트 레이아웃대시보드 레이아웃 대시 보드 페이지" 으로만 보입니다.datashboard 페이지의 응답이 지연 시간이 지난 후에 하는거 같은데 왜 이럴까 궁금해지네요.
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
[ Server ] Error: Cannot read properties of undefined (reading 'useSuspenseQuery')
아래와 같이 코드르 작성하고 그냥 PageClient 만 불러왔을 때도 정상 동작하는데 useSuspenseQuery 를 사용하면 에러가 발생합니다. page.tsximport { trpc } from "@/trpc/server"; import { PageClient } from "./client"; export default async function Home() { void trpc.hello.prefetch({ text: "Kyuleelim" }) return ( <div> <PageClient /> </div> ); } client.tsx"use cilent" import { trpc } from "@/trpc/client" export const PageClient = () => { const [data] = trpc.hello.useSuspenseQuery({ text: "Kyuleelim", }); return ( <div> {/* Page client */} Page Client says: {data.greeting} </div> ) }