이정환 Winterlood
@winterlood
수강생
36,511
수강평
2,463
강의 평점
4.9
웹 프론트엔드 한 입 크기로 잘라먹어 볼까요?!
안녕하세요 🙇♂
저는 무엇이든 쉽고 재미있게 설명할 방법이 있다고 믿는 사람이자
세상에서 가장 따뜻한 개발자 커뮤니티를 만들고자 하는 사람입니다.
📚 도서
📹 강의
한 입 크기로 잘라먹는 Next.js
한 입 크기로 잘라먹는 타입스크립트
한 입 크기로 잘라먹는 리액트
강의
로드맵
전체 1수강평
- 한 입 크기로 잘라먹는 Next.js(v15)
- 한 입 크기로 잘라먹는 타입스크립트(TypeScript)
- 한 입 크기로 잘라먹는 실전 프로젝트 - SNS 편
게시글
질문&답변
setAvatarImage(null) 부분 질문
안녕하세요 산독기님 이정환입니다.AI 인턴의 답변대로 setAvatarImage(null);는 프로필 수정 모달이 열릴 때 사용자 프로필을 원래의 초기 상태로 설정하려는 목적을 가지고 있습니다.구체적인 동작과 함께 코드를 이해하시려면 해당 useEffect를 주석처리한 상태로 아래의 동작을 수행해보시길 권장드립니다.프로필 이미지 변경수정하기 버튼을 누르지 않고 모달 종료모달 다시 열기이때 useEffect가 주석처리 되어 있다면 avatarImage의 값을 현재 데이터베이스에 저장된 유저의 정보로 초기화 하지 않습니다. 따라서 프로필 이미지란에는 앞서 변경한 이미지가 나타나게 될 것 입니다.
- 0
- 2
- 18
질문&답변
props 질문
안녕하세요 gmldnjs0402님 이정환입니다.아래에 AI 인턴이 적절한 설명을 해 주었네요! 확인해보시고 어려운 부분이 있으시면 추가 질문 부탁드립니다.참고로 이번 질문에서 다루고 있는 내용은 React의 컴포넌트 구조와 훅 사용 패턴에 관한 React.js 기초 개념에 해당합니다. 이 부분은 제 강의 「한입 리액트」에서 다루고 있는 주제이기도 합니다. 아래 링크에 해당 내용을 정리해 둔 자료가 있으니 함께 참고해 보셔도 도움이 될 것 같습니다.https://reactjs.winterlood.com/c89cba30-39b6-4094-85f6-f87a16842028읽어보시고 추가로 궁금한 점이 생기면 언제든지 질문 주세요 🙂
- 0
- 2
- 23
질문&답변
부모에서 훅 호출하여 자식에게 prop으로 내려주기 vs 자식에서 훅 호출 선생님은 어떻게 생각하시는지 궁금합니다
안녕하세요 최성준님 이정환입니다.우선 강의에서 작성하는 useDeletePost나 useEditPost 정도의 훅은 메모리를 과다하게 사용할 만큼 유의미한 메모리 공간을 차지하지는 않습니다. 또 훅의 호출은 컴포넌트가 언마운트 될 경우 함께 메모리에서 제거되기 때문에 메모리 누수 측면에서도 크게 걱정하실 필요는 없어보입니다. 결론적으로 Child 컴포넌트에서 직접 훅을 호출하는게 더 좋다고 생각합니다
- 0
- 1
- 29
질문&답변
Redux DevTools 에서 anonymous가 두 번씩 찍혀요
안녕하세요 이정환입니다.아마 높은 확률로 main.tsx 파일의 StrictMode를 제거하시지 않아 발생하는 문제가 아닐까 싶습니다. 아래 AI 인턴이 답변해준대로 React의 StrictMode가 활성화되어 있는 경우 컴포넌트가 두 번씩 렌더링될 수 있습니다. 한번 확인해보신 뒤 회신 부탁드립니다.
- 0
- 2
- 33
질문&답변
파일명 질문
안녕하세요 김성관님 이정환입니다.리액트 파일명을 대문자로 쓰는게 아닌, 리액트 컴포넌트가 될 함수의 이름을 대문자로 시작해야 됩니다. 파일명은 아무렇게나 지어도 상관없습니다.추가로 파일명하고 내보내는 함수를 다르게 쓰는 이유가 있냐고 질문 주셨는데요, 구체적으로 어떤 파일에서 어떤 함수를 내보내는 부분인지 답글로 회신주시면 확인 가능할 것 같습니다.추가로 화살표 함수와 function은 기호에 따라 자유롭게 사용하시면 됩니다. 어떤 방식을 사용하시든 기능에는 아무런 차이는 없습니다. export를 파일의 하단에 작성하지 않는 이유는 function 함수 선언 앞에 붙일 수 있기 때문입니다. 이 역시 개인적인 코드 스타일로 원하신다면 파일 하단에 작성하셔도 됩니다.
- 0
- 2
- 27
질문&답변
eslint설정 관련입니다.
안녕하세요 김민정님 이정환입니다.아래와 같이 rules 객체 안에 한 줄에 하나씩의 규칙을 넣어주시면 됩니다.참고로 이때 각 항목의 마지막에 콤마를 찍어주셔야 한다는 점 주의하셔야 합니다 (객체 프로퍼티이기 때문)(사진)
- 0
- 2
- 46
질문&답변
인증 처리하기에서 질문 드립니다.
안녕하세요 bluedev12님 이정환입니다.말씀하신 것처럼 profile 테이블의 행을 삭제하는 건 “부가 정보”만 지우는 것이고, 실제 로그인에 쓰이는 이메일/비밀번호 같은 인증 정보는 Supabase Auth 쪽(사용자 계정 자체)에 따로 저장됩니다. 그래서 “회원 탈퇴(계정 삭제)”를 제대로 하려면 Auth 사용자 삭제 + 관련 테이블 정리가 함께 진행되어야 합니다.그리고 이를 위해서는 Admin 클라이언트를 이용해야 하는데요, 말씀하신대로 클라이언트 측에서 어드민 클라이언트를 이용하는 것은 위험하므로 이는 보통 RPC를 이용하거나, 별도의 백엔드 서버가 필요한 영역입니다.
- 0
- 2
- 31
질문&답변
todolist에서 useReducer를 사용할때 UPDATE에서 오류가 생깁니다
안녕하세요 고민지님 이정환입니다.화살표 함수는 => 옆에 값을 적어주면 해당 값을 바로 반환하는 특징을 가지고 있습니다. 예를 들면 다음과 같습니다.const arrayFunction = (a, b) => a + b; // a + b의 값을 바로 반환함그런데 만약 이런 화살표함수에서 함수 내부에 여러줄의 코드를 사용하고 싶다면 다음과 같이 중괄호를 사용합니다. 이때 반환하려는 값이 있다면 일반 함수 선언과 같이 return을 이용해야 합니다.const arrayFunction = (a, b) => { const resValue = a + b; return resValue; } // a + b의 값을 resValue에 저장해두었다가 반환함그런데 만약 객체값을 바로 반환하려고 하는 경우 다음과 같이 중괄호만 사용하면 함수 본문으로 이해됩니다.const arrayFunction = (a, b) => { a:a, b:b } // ??? 문법 오류이럴 때에는 소괄호로 중괄호를 묶어주면 이 중괄호 내부를 객체로 인지하여 객체 값을 바로 반환하는 화살표 함수를 만들 수 있습니다.const arrayFunction = (a, b) => ({ a:a, b:b }); // {a:a, b:b}를 반환함질문주신 코드에서는 화살표 함수 뒤에 중괄호({)를 여신 다음 객체를 그대로 리턴하고 있기 때문에 오류가 발생하는 것 입니다.
- 0
- 2
- 35
질문&답변
useProfileData에서 queryFn의 에러 처리
안녕하세요 최성준님 이정환입니다.결론부터 말씀드리면 해당 요청을 “실패한 쿼리”로 만들고 싶지 않았기 때문입니다.onError는 말 그대로 쿼리가 실패한 이후에 호출되는 콜백입니다. 따라서 해당 콜백 함수가 호출되면 Tanstack Query 입장에서는 이미 해당 쿼리를 error 상태로 판단하고 retry(재 시도)를 하게 되거나 화면에 오류 메세지를 표기하는 등의 동작이 발생하게 됩니다.하지만 “프로필이 없어서 조회가 실패했다” 같은 경우에는 진짜 에러 상황이 아니라, “아직 프로필이 생성되지 않은 정상적인 초기 상태”에 가깝습니다. 그래서 queryFn 안에서 먼저 프로필 조회를 시도하고 프로필이 존재하지 않는 경우에만 createProfile을 호출해서 정상적인 데이터로 복구한 뒤 최종적으로 값을 return하도록 설계했습니다.이렇게 하면 결과적으로는 쿼리 결과가 성공한 것으로 간주됩니다. 그에 따라 불필요한 retry도 없고, UI 상 에러 메세지도 표기할 필요가 없어집니다.말씀해주신 것처럼 가독성만 놓고 보면 onError가 더 명확해 보일 수는 있지만, 이 경우에는 에러를 에러로 취급하지 않는 것이 핵심 의도였기 때문에 queryFn 내부에서 처리하는 쪽을 선택했습니다.
- 0
- 1
- 38
질문&답변
npm.ps1 파일로 인한 npm i randomcolor 안되는 문제
안녕하세요 이길이내길님 이정환입니다.질문자님 PC의 파워쉘 스크립트 권한 문제로 보이네요해당 문제를 해결하시려면 우선 파워쉘을 관리자 권한으로 실행하신 다음 아래의 명령어를 터미널에 입력해주세요// 현재 실행 정책 확인하기 Get-ExecutionPolicy위 명령어는 현재 PC의 실행 정책을 확인 하는 명령어로 Restricted 또는 RemoteSigned 라는 결과를 출력합니다. 이때 다음 그림처럼 Restricted 라는 결과가 출력될 경우 스크립트 파일을 읽어 실행할 수 없기에 문제가 발생할 수 있습니다.(사진)이럴 경우 다음 명령어를 입력해 권한 설정을 Restricted가 아닌 RemoteSigned로 바꿔주셔야 합니다.// 실행 정책을 RemoteSigned로 변경하기 Set-ExecutionPolicy RemoteSigned
- 0
- 2
- 30




