inflearn logo
강의

Course

Instructor

Complete Guide to Python/Django Web Service Development with React

Implementing User Follow React Screen

useEffect 훅에서 else 유무에 따른 결과

Resolved

207

jay2022

15 asked

0

안녕하세요.

다음 코드에서

useEffect(() => {
    if (!origUserList) setUserList([]);
    else setUserList(origUserList.map(user => ({ ...user, is_follow: false })));
  }, [origUserList]);

else가 있어야 하는 이유가 return 하지 않을 것이기 때문이라고 05:55 에서 말씀하셨는데, 이 부분에 대해 이해가 가지 않습니다.

그냥 보기에는 else가 없어도 동일하게 작동할 것 같아서 else를 빼봤는데 아니나 다를까 다음과 같은 에러가 납니다.

SuggestionList.js:24 Uncaught TypeError: Cannot read properties of undefined (reading 'map')

chatGPT에게 물어보니 else가 없어도 동일한 로직이라고 하는데 이유를 모르겠습니다.

react python django docker

Answer 1

0

pyhub

origUserList 값이 undefined이거나 null인 상황에서는 => setUserList([]) 호출을 할 것이며

origUserList 값이 있을 때에는 => setUserList(origUserList.map(생략)) 호출을 할 것입니다.

origUserList 값이 undefined이거나 null인 상황에서는 setUserList(origUserList.map(생략)) 코드가 호출되어서는 안 됩니다. map 호출은 배열(array)에서만 지원할 뿐, undefined에서는 지원하지 않습니다. undefined 에 대해서 map 호출이 되면 말씀하신 아래 오류가 발생합니다.

Uncaught TypeError: Cannot read properties of undefined (reading 'map')

아래와 같이 코드를 써볼 수도 있고

if (!origUserList) {
    setUserList([]);
    // return 문은 함수의 종료를 의미합니다. 아래 코드가 수행되지 않습니다.
    return;
}

// origUserList 값이 undefined 상황에서는 호출되지 않습니다.
setUserList(origUserList.map(user => ({ ...user, is_follow: false })));

혹은 강의처럼 else를 적용하셔도 origUserList값이 undefined 상황에서는 serUsetList.map(생략) 코드가 수행되지 않습니다.

if (!origUserList) {
    setUserList([]);
}
else {
    setUserList(origUserList.map(user => ({ ...user, is_follow: false })));
}

만약 아래와 같이 쓰셨다면 말씀하신 TypeError 예외가 발생합니다.

if (!origUserList) {
    setUserList([]);
}
// origUserList가 undefined인 상황에서 아래 코드가 수행되어 TypeError가 발생합니다.
setUserList(origUserList.map(user => ({ ...user, is_follow: false })));

살펴보시고 댓글 남겨주세요.

화이팅입니다. :-)

 

1

jay2022

답변 감사합니다! userListorgUserList를 동일시하다 보니 생긴 착오였습니다.

안녕하세요.

0

44

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

267

1

useAxios 훅의 dependency array 설정

0

241

1

useEffect에서 변수 업데이트 관련 질문

0

378

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

262

1

bootstrap4

0

464

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

357

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

568

3

useState는 필수일까요?

0

256

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

589

4

Django allauth를 사용한 소셜 로그인 시 에러

0

648

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

548

2

useLocalStorage() 함수 사용여부

0

223

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

443

1

리듀서의 의미 재확인

0

423

1

simple-jwt Refresh Token 사용 노하우

0

894

2

docker compose 를 통한 배포 관련 오류 문의

0

664

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

357

1

is_like_user

0

227

1

related_name 오류

0

267

1

re_path 오류

0

252

1

re_path url

0

243

1

No post matches the given query

0

653

2

sendgrid 메일 발송이 안됩니다 ㅠㅠ

0

884

3