props 질문
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
TodoItem 에서 todo값을 props로 넘겨줄때 왜 {...todo} 로 사용하나요? {todo} 는 안되는건가요?
- react
- typescript
- react-query
- supabase
- zustand
176만명의 커뮤니티!! 함께 토론해봐요.
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
TodoItem 에서 todo값을 props로 넘겨줄때 왜 {...todo} 로 사용하나요? {todo} 는 안되는건가요?
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
map 함수 안에서 자식 컴포넌트가 순회하는 코드가 있다고 할 때, 그 자식 컴포넌트 안에서 훅(ex useEditPost/useDeletePost)을 호출하는 것이 좋을까요? 아니면 부모에서 훅을 한번 호출한 뒤 자식 컴포넌트에 prop으로 내려주는 것이 좋을까요? 전자는 자식마다 호출되어 할당될 것 같아서 메모리 관리에 단점이 있을 것 같고 (추측입니다), 후자는 (훅의 함수를 받아야하는 대상 컴포넌트가 자식 내부에 더 깊은 뎁스에 있다고 할 때) Prop Drilling의 단점이 있을 것 같은데요 선생님은 어떻게 생각하시나요?
미해결
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 선생님 선생님 리액트 기초 강의를 들었는데 제 기억에서는 그 리액트 파일명을 대문자로 써야한다? 이렇게 들었던 거 같은데 (아니면 죄송) 왜 여기에서는 파일명을 소문자로 쓸까요? 그리고 파일명하고 그 내보내는 함수를 다르게 쓰는 이유가 있나요? 그리고 왜 화살표함수로 안만들고 function으로 할까요? 그리고 export를 아래에 안쓰는 이유가 있을까요? 수업시간에 설명했는데 제가 놓친거면 죄송합니다 ㅠㅠ
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
지금 현재날짜 12.28 슈퍼베이스 없어지고 자체클라우드 연동인데 강의는 다 슈퍼베이스 들어가서 이것저것하는데 공부가 진행이안돼요 보면서 따라해도 계속 막히고 그냥 저 혼자 맨땅에 헤딩하는 느낌이에요... 로그인기능 구현하는데 403에러나서 강의는 슈퍼베이스로 진행하는데 저혼자 그냥 어찌저찌 해보고있는데 강의를 보면서 진행이 안되니.. 미칠거같네요
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
현재 12.28일 수강중인데 슈퍼베이스라는것이 없어진거같아요 방문자수기록 추가할때도 슈퍼베이스 클릭하는게 아닌 채팅창에 자체 클라우드 허용할거냐아는 allow버튼이 나와서 그거 클릭했더니 되긴했는데 크레딧이 너무 빨리 끝나버렸어요 그 해결방법 카카오톡영상도 확인 했는데 그대로 따라 들어갔는데 superbase가 보이지않아요 어떻게 해야할까요.. ㅠㅠ 벌써 막힌거같아요
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요. 먼저 강의 정말 잘 듣고 있습니다. supabase를 어떤 식으로 프로젝트에 적용할 수 있을 지 배울 수 있어 유익했습니다. 섹션 6강에 궁금한 점이 생겨서 질문 드립니다. 강의 내용에서 조금 벗어났지만, supabase에서 회원 탈퇴하기가 궁금했습니다. auth.ts에 await supabase.auth.admin. deleteUser 를 추가하고 profile 테이블의 행을 삭제하면 될까요? admin를 호출해도 되나 싶어서 여쭤보고 싶었습니다. 추후 강의에 계정 삭제하기도 포함해주시면 정말 좋을 거 같습니다! 감사합니다.
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 선생님! 대단한 질문은 아니고 의견을 여쭙고자 질문 남깁니다. useProfileData 훅에서 queryFn에 profile 조회 실패 시 createProfile을 하는 로직을 짜주셨는데요 혹시 onError 콜백함수에 로직을 정의하지 않고 쿼리함수에 정의하신 이유가 따로 있을까요? 개인적으론 가독성상 onError에 넣는게 조금 더 명확하지않나 싶어서 의견을 여쭤보고 싶네요!
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
9강에서 카카오톡 로그인을 위한 세팅을 모두 다 했는데 계속해서 같은 오류가 납니다 어떻게 해결해야할까요? api id.key, 리다리엑트 모두 적었습니다 ?
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
카카오톡 > 카카오로그인> 보안 '보안'탭이 보이지 않아요 다른 곳 다 들어가봐도 못 찾겠습니다 챗gpt는 이게 어떤 조건이 충족되야 자동생성된다는데 ui가 바뀐것 같은데 위치를 못 찾겠습니 다
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 선생님. 강의를 모두 수강한 후 복습을 하던 중 궁금한 점이 생겨 질문드립니다. 좋아요 기능에서 동시성 문제를 해결하기 위해 행 잠금 을 사용하는 것으로 이해했습니다. 이 경우, 첫 번째 유저의 좋아요 요청이 처리되는 동안 해당 행이 잠기게 되는데, 만약 동시에 많은 사용자(수백~수천 명)가 좋아요 버튼을 누르는 상황 이라면 요청들이 순차적으로 대기하게 되어 응답 지연이 발생되지는 않나요?? 또한 이런 이유 때문에 클라이언트 단에서는 낙관적 업데이트 를 적용하는게 맞는걸까요??
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 강의 정말 잘 듣고있습니다. 현재 강의를 무한 중첩 댓글 구현하기까지 수강했습니다! 테스트를 위해 여러가지 사항들을 직접 체크하고있는데 Github로 로그인한 사용자의 정보들(avatar_url, name)들은 기본적으로 사용하지 않고 랜덤한 닉네임과 기본 아바타 이미지가 나오는게 정상 동작일까요? 제가 이해한 흐름은 다음과 같습니다. 1. Github(OAuth) 로그인 2. Supabase Authentication > Users에 사용자 생성 (profile 테이블에는 아직 생성 되지 않음) 3. SessionProvider에서 useProfileData 호출 export default function SessionProvider({ children }: { children: ReactNode }) { const session = useSession(); const setSession = useSetSession(); const isSessionLoaded = useIsSessionLoaded(); const { data: profile, isLoading: isProfileLoading } = useProfileData( session?.user.id, ); useEffect(() => { supabase.auth.onAuthStateChange((event, session) => { setSession(session); }); }, []); if (!isSessionLoaded) return <GlobalLoader />; if (isProfileLoading) return <GlobalLoader />; return children; } 4. fetchProfile(userId) 실행 export async function fetchProfile(userId: string) { const { data, error } = await supabase .from("profile") .select("*") .eq("id", userId) .single(); if (error) throw error; return data; } Supabase Table Editor > profile 에는 아무런 결과가 저장되어 있지 않기 때문에 PostgrestError: PGRST116 에러 발생 useProfileData catch 블록 실행 → createProfile 호출 랜덤한 닉네임 + avatar_url이 기본으로 저장 만약 제가 이해한 흐름이 맞다면 어떤 방법을 써야할까요? 제일 먼저 드는 생각은 createProfile에 session을 매개변수로 받아서 session.user.user_metadata.full_name 과 avatar_url 을 insert에 넣는걸 생각했습니다. createProfile export async function createProfile(userId: string, session?: Session) { const { data, error } = await supabase .from("profile") .insert({ id: userId, // ↓ 여기 수정 했어용 nickname: session?.user.user_metadata?.full_name || getRandomNickname(), avatar_url: session?.user.user_metadata?.avatar_url || null, }) .select() .single(); if (error) throw error; return data; } use-profile-data.ts export function useProfileData(userId?: string) { const session = useSession(); const isMine = userId === session?.user.id; return useQuery({ queryKey: QUERY_KEYS.profile.byId(userId!), queryFn: async () => { try { const profile = await fetchProfile(userId!); return profile; } catch (error) { if (isMine && (error as PostgrestError).code === "PGRST116") { return await createProfile(userId!, session!); // 여기 session 추가 했어용 } throw error; } }, enabled: !!userId, }); } 이렇게 코드를 수정하고 profile table을 삭제한 후 다시 Github로 로그인 하면 사용자의 프로필 이미지와 이름이 받아와졌습니다. 더 효율적이거나 더 좋은 방법이 있을까요? 혹은 제가 잘못 알고 있는게 있을까요?
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
결제하고 러너블에서 슈퍼베이스 연동을 할려했는데 connect supabase 이 버튼을 눌렀는데 어딜봐도 슈퍼베이스란건 안적혀있는데 어떻게 연동하나요?
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요, 강의 잘 듣고 있습니다! 6.2강 회원가입 구현 강의 18:06경에 설명해주시는 AuthResponse 타입의 정의?가 변경된 것인지, 제 코드 에디터에는 아래와 같이 표시됩니다. 첫 번째 객체 부분 {data: T; error: null}은 이해가 가는데요, 두 번째 객체 부분은 강의상 화면과 차이가 좀 있어서, 추가로 설명해주실 수 있으면 감사하겠습니다.
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요! 타입 스크립트부터 현재 강의까지 너무 유용하게 잘 듣고 있는 수강생입니다! 9-1 강의를 수강하다가 문득 궁금함이 생겨서 질문 남겨 봅니다. A 유저와 B 유저가 있다고 가정했을 때 A 유저가 프로필 상세 화면을 보고 있는 상태에서 B 유저가 새로운 포스트를 올렸는데, 이후에 A 유저가 메인 리스트 화면으로 이동하면 B 유저가 올린 새로운 포스트가 로드되지 않는 것으로 보입니다! (새로 고침하면 당연히 정상적으로 보이고요) 제가 코드 작성을 하면서 놓친 부분이 있어 이러한 현상이 발생하는 것인지, 아니면 이후 강의에서 해당 부분이 수정되는 것인지 여쭤보고 싶습니다. 늘 좋은 강의 감사합니다! 🙂 좋은 하루 보내세요~!
미해결
[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다. 💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡 평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 투두 리스트 ui 작업 중에 material-tailwind가 리액트와 호환 문제가 있는지 리액트 19에서 18로 낮춰도 인풋과 아이콘 버튼 컴포넌트가 제대로 표시되지 않아요 ㅜㅜ
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
(10.3) 댓글 조회 기능 구현하기 8:50 CommentItem에서 props를 작성하기전 <CommentItem key={comment.id} {...comment} /> 에 {...commnet}를 넣어도 TypeScript에서 에러가 나지 않던데 이유가 궁금합니다. // comment-list.tsx {comments.map((comment) => ( <CommentItem key={comment.id} {...comment} /> ))} // comment-item.tsx export default function CommentItem() { // props를 안 받음 return <div>하드코딩된 내용</div> }
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요, 이정환 강사님. 강의를 모두 수강하고 혼자 프로젝트를 진행하고 있는 수강생입니다. 모달 store를 구현하던 중 의문점이 생겨 질문합니다. 만약 postEditorModal에 더불어 다른 모달 데이터를 관리하는 스토어(예를 들어 projectEditorModal)을 만들고 싶으면, store 파일을 두 개로 나누어 만드는 것이 맞을까요? 처음에는 똑같은 state와 actions 값을 담는 store니 하나의 파일로 관리해서 만들어도 되지 않을까 생각했는데, devtools 이름을 나누어 관리하는 것이 버그 관리나 유지 보수 관점에서 더 유리할 것 같아서요. 감사합니다.
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 선생님 supabase의 회원가입 기능을 사용하여 가입한 경우 자동으로 로컬스토리지에 토큰정보들이 저장이 되는 부분에서 이 부분들이 보안적으로 문제가 되지 않나요?? supabase를 사용하는 실무에서 이러한 문제를 어떤식으로 보통 해결하나요?
미해결
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
like테이블을 생성하고자 작성을 한 후 Add foregin key relation 을 클릭하여 public schema를 선택한 이후에도 하위 테이블 목록이 보이지 않습니다..ㅠㅠ 딱히 다른 설정을 만진것이 없이 강의를 따라 쭉 해보고 있는데 무언가가 바뀐건가요? 강의 내에서는 post테이블이면 public.post로 나오지만 지금 현재는 post로만 보이는 상태인데 어떤 부분이 바뀌었나? 혹은 설정을 못한 부분이 있나 잘 모르겠습니다..
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
2-3강 듣는 중에 교재 위치 2-3 9) 이거 저만 안보이는 것일까요? 흑흑,, 윈도우 사용중인데 이게 어디있는지 모르겠습니다. 지피티한테 물어봐도 모르겠어서 질문드려요 현재 수강 진도를 함께 알려주세요! "1주차 3강까지 완료" 또는 "2주차 실습 중"처럼 어디까지 들으셨는지 적어주시면 맞춤형 답변을 드릴 수 있어요 📚 구체적인 상황과 함께 질문해주세요! "AI가 안 된다"보다는 "Cursor에서 이런 프롬프트를 입력했는데 이런 에러가 나와요"처럼 상세하게 적어주시면 더 정확한 답변을 드릴 수 있어요 🎯 스크린샷이나 코드를 첨부해주세요. 에러 화면, 현재 진행 상황을 보여주시면 문제 해결이 10배 빨라집니다! 마크다운 코드 블록(```)을 활용하면 더 깔끔하게 정리할 수 있어요 📸 커뮤니티 검색을 먼저 해보세요. 같은 문제로 고민하신 분들이 이미 해결책을 찾았을 수도 있어요. 검색 후 못 찾으시면 언제든 새로 질문해주세요! 🔍 서로 도우며 함께 성장해요. 나도 모르는 건 "저도 궁금해요!"라고 댓글 달아주시고, 아는 건 적극적으로 공유해주세요. 가르치면서 더 잘하게 됩니다 💪 바이브코딩 관련 질문은 환영, 기술 세부사항은 GPT 활용! 프롬프트 작성법, AI 도구 사용법은 여기서, 복잡한 코딩 문법은 ChatGPT에게 물어보시는 게 더 빨라요 🤖 진도나 과제 관련 문의는 1:1 문의를 이용해주세요. 개인적인 학습 계획, 환불, 수강 기간 연장 등은 따로 문의해주시면 더 자세히 상담드릴게요 📞 실패 사례도 공유해주세요! "이렇게 했더니 망했어요" 같은 경험담도 다른 수강생들에게 큰 도움이 됩니다. 실패도 소중한 학습 자료예요 💡 💬 좋은 질문 예시 [진도] 2주차 5강 - React 컴포넌트 생성까지 완료 [질문] Cursor에서 버튼 컴포넌트 생성 시 에러 발생 상황: 2주차 실습 중 버튼 컴포넌트를 만들려고 하는데 프롬프트: "빨간색 버튼 컴포넌트 만들어줘" 에러 메시지: [스크린샷 첨부] 시도해본 것: GPT에게도 물어봤는데 같은 에러 발생 어떻게 해결하면 될까요?