프로젝트 진행 중에 상세보기 페이지를 만드는데, 이미지 컴포넌트에 주소를 넘겨주면서 TypeError가 발생했다.

TypeError: Cannot read property ‘0’ of undefined

해당 오류는 array가 아닌 변수에 인덱스로 접근할 때 자주 봤는데, 이번에는 props가 확실히 array였기 때문에 골치가 아팠다.

그런데 console.log를 찍어보니 useEffect에 props가 변화할 때마다 작동을 하는데, 왠지 undefined에서 [0]으로 접근해서 오류가 나는 느낌이었다.

처음 mount 될 때는 undefined였다가 부모컴포넌트가 비동기처리를 끝내고 나면 다시 받아온다.

그래서 이번엔 바로 로그를 찍는게 아니라 image가 존재하고, length가 0 이상이면 찍도록 해보았고, 에러가 해결됐다!

    useEffect(() => {
        // 이거는 에러! console.log(image[0])
        if(image && image.length > 0){
            console.log(image[0])
        }
    }, [image])

처음 컴포넌트가 생성될 때 props가 비동기처리로 오는 데이터일 경우엔 항상 검증을 한 후에 활용하도록 습관을 들이자!

만약 이런 타입이 아닐 경우, 변수의 타입을 확인해보기를!

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다