inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

5.4) Props로 데이터 전달하기

5.4) Props로 데이터 전달하기 에서 toUpperCase() 오류

해결된 질문

264

작성자 없음

작성한 질문수 0

0

Button.jsx?t=1739152459356:22 Uncaught TypeError: Cannot read properties of undefined (reading 'to') at Button (Button.jsx?t=1739152459356:22:17)


An error occurred in the <Button> component. Consider adding an error boundary to your tree to customize error handling behavior. Visit https://react.dev/link/error-boundaries to learn more about error boundaries. Error Component Stack at Button (Button.jsx?t=1739152290133:19:112) at App (<anonymous>)

 

javascript react node.js

답변 4

0

이정환 Winterlood

안녕하세요 이정환입니다.

우선 toUpperCase에서 오류가 발생하는 이유는 ESLint 설정과는 무관합니다. 결론적으로는 App -> Button 컴포넌트로 color Props의 값이 정상적으로 전달되지 않았기 때문에 발생하는데, 이를 방지하시려면 defaultProps를 이용하거나 구조분해 할당의 기본값을 설정해주시는 방식으로 해결 하실 수 있습니다.

보내주신 코드로 살펴보면 현재 defaultProps 기능이 정상적으로 작동하지 않는걸로 보이는데요, 그렇다면 아래와 같이 변경해보시면 어떨까 싶습니다. 구조분해 할당의 기본값을 사용하는 문법입니다.

const Button = ({text, color = "black" )} => {...}

 

0

sanha

감사합니다. 해결되었습니다.

다만, defaultProps 기능이 정상적으로 작동하지 않는 이유를 알 수 있을까요? 아니면 사용할 수 없는 건지..

1

이정환 Winterlood

안녕하세요 이정환입니다. 올려주신 질문 이후에 확인해보니 React 19 버전부터는 defaultProps 기능 자체가 아예 제거되었다고 하네요, 버전 변경으로 인한 이슈인 것 같습니다. 이에 안내드린 방식으로 사용하시면 됩니다. 실습에 불편드려 죄송합니다 🙇‍♂

금주 내로 버전 이슈에 맞춰 강의 업데이트도 진행 될 예정입니다.

0

sanha

eslintrc.json 이 파일이 존재하지 않아 eslint.config.js에서 rules에서 똑같이 적용했지만 여전히 uppercase에서 오류 발생

0

sanha

20250210202639.jpg.webp

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

sanha님께서 질문하신 내용에 따르면, Button 컴포넌트에서 toUpperCase() 함수를 사용하는 과정에서 undefined 속성을 읽으려는 에러가 발생한 것 같습니다. 이 문제는 주로 toUpperCase() 메소드를 호출하기 전에 해당 메소드가 호출되는 변수가 undefined로 설정되어 있기 때문에 발생합니다.

우선, 문제가 발생한 Button 컴포넌트에서 toUpperCase()를 사용하기 전에 해당 변수가 올바르게 문자열 값을 가지고 있는지 확인하는 것이 좋습니다. 다음과 같은 방법으로 확인할 수 있습니다:

  1. Variable Check: toUpperCase()를 호출하기 전에 변수가 undefined가 아닌지 확인합니다.

    const someVariable = props.someProp || ''; // 기본값을 빈 문자열로 설정
    const upperCaseValue = someVariable.toUpperCase();
    
  2. Condition Handling: 함수를 호출하기 전에 변수가 유효한지 조건문을 통해 체크합니다.

    let upperCaseValue;
    if (props.someProp) {
      upperCaseValue = props.someProp.toUpperCase();
    }
    

위 코드에서는 toUpperCase()를 호출하기 전에 변수가 undefined인지 확인하고 필요한 경우 기본값을 설정하거나 조건문으로 처리할 수 있습니다.

한편, 질문에서 언급한 “오류 경계(Error Boundaries)“에 대한 React 공식 문서를 참고하여 특정 컴포넌트에서 발생하는 에러를 효과적으로 처리하도록 설정할 수도 있습니다. 이는 컴포넌트 트리에 에러가 발생할 때 보여줄 사용자 정의 UI를 설정할 수 있게 합니다. Error Boundaries 문서를 참고하시길 권장드립니다.

비슷한 에러 상황에 대한 다른 질문과 답변을 찾아보실 수 있는 링크도 함께 제공합니다:
- Props 전달 시의 오류와 해결 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

useEffect와 lifecycle문의

0

28

2

프론트엔드 학습 수준 문의

0

39

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

48

2

데이터 로딩중 화면만 계속 나와요!!

0

55

2

퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요

0

79

2

이후의 커리큘럼 문의

0

102

2

실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.

0

50

2

최적화 관련 질문있습니다 (useMemo 등)

0

84

3

프로바이더 컴포넌트의 위치는 어떤 기준인가요?

1

82

3

Date 객체에 관련하여 질문드립니다.

0

85

2

리액트 개정판 교재 질문

0

60

2

예제코드가 안나와요!

0

78

2

select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com

0

108

2

onMouseEnter 관련 문의 드립니다

0

92

3

배열의 렌더링 관련 질문 드립니다.

0

73

2

2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.

0

113

2

TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?

0

137

2

useCallback 적용한 onCreate, onUpdate, onDelete 함수..

0

70

1

vs code 자동완성관련 문의

0

113

2

91강 useEffect내에서 상태변화함수 호출시 발생하는 에러

1

179

2

87강 필터 함수 질문

0

69

2

useRef, useState count 비교

0

67

2

안된다고했던 이유가 무엇이었는지 모르겠습니다

0

90

2

85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.

0

75

2