묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지
02-04 layout.tsx 구조가 달라요
맨 위가 강의에 나오는 기본 구조밑에 코드가 제 코드 구조입니다.버전이 달라서 그런가요?
-
미해결한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
shadcn에서 radix ui와 base ui 차이는 뭔가요?
shadcn에서 radix ui와 base ui 차이는 뭔가요? 그리고 어떤 걸 선택해야 할까요?
-
미해결한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
updateTodo 함수 생성시 화살표 함수 사용 안하는 이유
제목과 같이updateTodo 함수 생성시 화살표 함수 사용 안하는 이유궁긍합니다! ai 질문하니 스타일 차이라던데 혹시 다른이유가 있을까요? this 관점에 차이가 있다고는 하는데 현재 프로젝트에서는 딱히 의미가 없을거 같아 문의 드립니다!
-
미해결한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
4.11 바로 투두 삭제가 안됨 질문
투두 삭제할 때 mutation 부분 코드를 강의와 똑같이// use-delete-todo-mutation.ts export function useDeleteTodoMutation() { const queryClient = useQueryClient(); return useMutation({ mutationFn: deleteTodo, onSuccess: (deletedTodo) => { queryClient.setQueryData<Todo[]>(QUERY_KEYS.todo.list, (prevTodos) => { if (!prevTodos) return []; return prevTodos.filter((prevTodo) => prevTodo.id !== deletedTodo.id); }); }, }); } 이렇게 치면 바로 삭제가 안 되고 새로고침해야 적용이되는데 export function useDeleteTodoMutation() { const queryClient = useQueryClient(); return useMutation({ mutationFn: deleteTodo, onSuccess: (_data, deletedId) => { queryClient.setQueryData<Todo[]>(QUERY_KEYS.todo.list, (prevTodos) => { if (!prevTodos) return []; return prevTodos.filter((prevTodo) => prevTodo.id !== deletedId); }); }, }); }이렇게 작성하면 바로 삭제 적용이 됩니다. 무슨 차이가 있는 걸까요?? 그리고 강의에 왜 처음 코드는 바로 삭제 반영이 안 되는 건지 궁금합니다 ㅜㅜ!
-
해결됨Next.js 마스터 클래스: Part 1 미션으로 배우는 App Router의 본질과 렌더링 설계
Vercel 사용법
26강 마지막에 다음에 Vercel 사용법 알려준다고 되어 있는데 Next.js 마스터 클래스: Part 2 에 Vercel 사용법이 나오는 건가요?26강. generateMetadata: 검색 엔진(SEO)의 마음과 소셜 미디어 공유를 지배하는 동적 메타데이터 다음에 Vercel 사용법이 않나오네요?
-
미해결타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지
10-6 실습 할 수 없습니다..
폴더가 어떻게 밀렸는지 10-6에는 그 전 강의 내용이 있어서 라우트 핸들러에서 캐싱처리 하는 내용의 백엔드 코드와 프론트 코드가 없어서 실습이 불가능합니다 ..🥲 확인 부탁드립니다 .. !
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
cascade 질문
cascade: true 후 createUserAndProfile의 user 안에 직접 profile을 넣고 postman에서 post (/user/profile)요청시 profile이 생성된 것처럼 보이지만get(/users) 요청 시 해당 유저는 profile이 null로 떠야하는데실습으로 post (/user/profile) 이후 get (/users) 요청하면 해당 유저가 profile 값을 가지고 있습니다. 코드를 똑같이 입력했는데 뭐가 문제일까요?
-
해결됨한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
인증 정보가 만료되었을 때 라우트 가드 처리가 궁금합니다!
라우트 가드 학습 중 궁금한 점이 생겨서 질문드립니다!import { useSession } from "@/store/session"; import { Navigate, Outlet } from "react-router"; export default function MemberOnlyLayout() { const session = useSession(); if (!session) return <Navigate to={"/sign-in"} replace={true} />; return <Outlet />; }라우트 가드에서는 인증 정보 유무만 검사하고, 인증 정보 만료 여부는 별도로 확인하지 않나요?만약 그렇다면 인증 정보가 만료된 상황에서의 처리 방법이 궁금합니다! 고민해봤을 때 인터셉터 등 별도 로직으로 구현해 다음과 같이 처리할 것 같습니다접근한 페이지에서 인증이 필요한 요청 처리가 있다면 refreshToken을 이용해 accessToken을 재발급 한 뒤 요청을 재시도한다 refreshToken도 만료되었다면 요청을 취소하고 로그인 페이지로 리디렉션 한다 그런데 이렇게 처리하면 refreshToken도 만료된 사용자는 인증 정보가 있으므로 요청 페이지로 이동한다짧은 순간이나마 데이터가 없는 빈 화면이나 깨진 UI를 본다로그인 페이지로 리디렉션되며 혼란을 겪는다그래서 라우트 가드에서 만료된 경우 접근을 막아야 되지 않을까 생각해봤는데 매번 토큰 유효성 검증을 수행하면 성능 저하가 발생할 것 같다는 생각을 했습니다 어떻게 처리하면 좋을지 의견을 여쭤보고 싶습니다!
-
해결됨한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
supabase를 사용하지 않을 경우 세션 데이터의 변경을 감지하고 스토어에 보관하는 방법이 궁금합니다!
안녕하세요! 항상 강의 잘 듣고있습니다 :)강의에서 onAuthStateChange를 사용해서 사용자 로그인 시 세션 데이터가 변경되며 업데이트된 세션이 매개변수로 전달되고, 업데이트된 세션을 스토어에 보관했었습니다supabase를 사용하지 않는다면 세션 데이터 변경을 어떻게 감지하고, 스토어에 보관 해야될지 고민해봤는데 세션 데이터를 사용하는 곳에서 직접 저장 / 수정하는 방법 혹은 강의에서 배웠던 persist와 subscribeWithSelector를 활용한 방법도 있을 것 같은데 명확한 방법이 떠오르지 않아 강의 내용과는 조금 방향성이 다르지만 질문드리게 되었습니다!
-
미해결한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
4.6 id를 string으로 변경시 오류
id를 전부 string으로 변경했음에도 계속 오류가 발생해서 ai한테 도움을 요청했더니 create-todo.ts에 header값을 붙이라고 하더라고요!그래서 해당 파일 코드에 headers: { 'Content-Type': 'application/json',}를 붙여줬더니 정삭작동하는 걸 확인할 수 있엇습니다. 왜 이 헤더를 붙여줘야 하는 건가요?import { API_URL } from '@/lib/constants'; import type { Todo } from '@/types'; export async function createTodo(content: string) { const response = await fetch(`${API_URL}/todos`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ content, isDone: false }), }); if (!response.ok) throw new Error('Create Todo Failed'); const data: Todo = await response.json(); return data; }
-
미해결타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지
그림 예제는 따로 제공이 안되나요?
강의에서 이해하기 쉽게 그림으로 설명해주시는데 예제코드에 따로 그림이 첨부되어있진 않던데 혹시 그림은 따로 제공이 안될까요? 그리고 중간 중간 편집이 어색하게 되어서 중복 대사가 있다보니 오히려 더 헷갈리게 되더라고요강의 03-03 "클라이언트 컴포넌트에서 서버 컴포넌트 렌더링 하기 -1"에서 6분 18초 가량부터 시작해서 대사가"페이지 컴포넌트에서 데이터 패치 컴포넌트로 props를 전달하는 건 가능하지만 그리고 페이지 컴포넌트에서 데이터 패치 컴포넌트로 props로 데이터를 전달하는 건 가능하지만 클라이언트 래퍼 컴포넌트에서 데이터 패치 컴포넌트로 props로 데이터를 전달하는 건 불가능한 그런 구조가 되게 되는 겁니다"이러다보니 오히려 헷갈리게 되더라고요 이런 부분은 확실히 편집되면 좋겠습니다.이미지도 오히려 설명이 달라서 "페이지 컴포넌트에서 클라이언트 래퍼 컴포넌트로 dataFetch를 props로 전달이 가능하고, 페이지 컴포넌트에서 데이터 패치 컴포넌트로도 props 전달이 가능하지만 클라이언트 래퍼 컴포넌트에서 데이터 패치 컴포넌트로 props를 전달하는건 불가능한 구조가 되게 되는겁니다"와 같이 수정이 좀 필요해보입니다.
-
해결됨한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
리액트 타입스크립트 관련 질문있습니다.
타입스크립트 강의를 따로 안들어서 그런데 컴포넌트 별로 props를 넘길때 언제는 구조분해할당으로 넘기고 언제는 그냥 타입만 선언해서 넘기던데 따로 판단하는 기준이 있을까요? CommentEditor 컴포넌트 props 넘길때 {postId}:{postId : number} 과(postId : number) 의 차이가 명확히 그려지지가 않습니다.
-
해결됨React 마스터 클래스: Part 3 - 실무 핵심 라이브러리 정복 (TypeScript, Zustand, React Hook Form, TanStack Query)
[실습] 80강 없음
[실습] 80강. 테스팅과 MSW: 서버 없이도 완벽하게 동작하는 프론트엔드 유닛 테스트 내용이 없어요.vitest 테스트 환경과 설명이 추가되었으면 좋겠네요
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
@types/bcrypt 설치과정이 누락된것같습니다.
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. await bcrypt.compare(user.password, existingUser.password);이부분 작성하는 실습인데, 타입에러가 나서 보니깐 bcrypt 타입모듈을 설치하는과정이 강의에서 빠진것같습니다.
-
해결됨한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
소셜 로그인 구현하기 관련하여 질문이 있습니다!
안녕하세요! 강사님이 얘기해주신 부분에서 구현을 다했고, 추가로 구글로그인도 적용시켰습니다!이후에, 카카오 로그인 관련해서 적용하려고 앱설정 및 AI 도움을 받아 하려했는데, 구현 부분에서 막혔습니다.잘못된 요청 (KOE205)onebite-log 서비스 설정에 오류가 있어, 이용할 수 없습니다.서비스 관리자의 확인이 필요합니다.서비스 관리자라면 아래를 확인해보세요.왜 에러가 발생하나요?접기설정하지 않은 카카오 로그인 동의 항목을 포함해 인가 코드를 요청했습니다.설정하지 않은 동의 항목: account_email어떻게 해결할 수 있나요?접기앱 관리 페이지의 [카카오 로그인] > [동의항목]에서 동의 항목 설정을 변경하거나, 설정하지 않은 동의 항목을 제외하고 재요청합니다.이걸 해결하기 위해선 동의항목에 가서 비즈앱으로 전환하는 방법 밖에 없는 지 궁금하여 문의드립니다!
-
미해결타입스크립트로 배우는 Next.js 16+ 완전 정복 : 기초부터 최신 아키텍처까지
cacheLife에 대한 질문입니다
강의와 다르게 지금은 default 프리셋이 바뀌어서 질문드립니다 default의 경우 expire값이 never던데 그러면 캐시가 만료되지 않고 revalidate값에 따라 주기적으로 갱신된다고 이해하면 될까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
process.env port key 에러
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. typeorm 강의 듣다가 config 섹션 먼저 듣고 있습니다. parseInt를 붙였는데도 string | undefined에러가 떴는데 뭐가 문제인지 모르겠어요..
-
해결됨한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
ui 파일 질문드립니다.
안녕하세요! ui 관련해서 궁금한 것이 있어 질문드립니다.Popover와 같이 radix-ui 와 @/components/ui (shadcn/ui ..?) 있는 컴포넌트의 경우, 어떤 것을 사용하는지에 대한 기준이 있을까요?? PopoverClose 는 @radix-ui 에서 받아오는데, 어떤 것은 @/components/ui 에서 가져와서 사용하고 그래서 혹시나 기준이 있나 궁금해서 질문드립니다!
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
secureTextEntry 설정에 관해
비밀번호 입력 후 수정 시 상태 보존 이슈 secureTextEntry 설정을 하면 비밀번호를 입력 후 재 입력할 때 비밀번호 상태가 보존되지 못 하고 다시 입력해야 하는데 이게 원래 이런걸까요?
-
미해결한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
tanstack query devtools에서 질문있습니다!
[todo,list]는 stale이 되는데평탄화한 캐시는 왜 fresh를 유지하는지 이해가 안됩니다😅