>웹 프론트엔드 >JS 튜토리얼 >React의 Map 함수를 사용하여 \'TypeError: 정의되지 않은 속성을 읽을 수 없습니다\'를 수정하는 방법

React의 Map 함수를 사용하여 \'TypeError: 정의되지 않은 속성을 읽을 수 없습니다\'를 수정하는 방법

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-20 06:27:29237검색

How to Fix

맵 함수를 사용하는 React의 "정의되지 않은 속성을 읽을 수 없습니다" 오류

React 애플리케이션에서 "TypeError: 정의되지 않은 'onPlayerScoreChange' 속성을 읽을 수 없습니다"라는 오류 메시지가 나타납니다. "는 일반적으로 지도 기능을 사용할 때 바인딩에 문제가 있음을 나타냅니다. 이 문제를 해결하는 방법은 다음과 같습니다.

map 함수는 기존 배열을 반복하고 각 요소에 대해 콜백 함수를 호출하여 새 배열을 생성합니다. 콜백 함수 내에서 이는 React 구성 요소의 컨텍스트가 아닌 전역 컨텍스트를 나타냅니다. 따라서 적절한 바인딩 없이 콜백 함수 내에서 React 구성 요소의 속성에 액세스하면 "정의되지 않은" 오류가 발생합니다.

이 문제를 해결하려면 화살표 함수를 사용하거나 콜백 함수를 React에 바인딩할 수 있습니다. 구성요소의 컨텍스트.

화살표 함수 사용:

화살표 함수는 주변 함수의 컨텍스트를 상속하므로 지도 콜백에 화살표 함수를 간단히 사용할 수 있습니다.

<code class="javascript">{this.state.initialPlayers.map((player, index) => {
    return (
        <Player
            name={player.name}
            score={player.score}
            key={player.id}
            index={index}
            onScoreChange={this.onPlayerScoreChange}
        />
    );
})}</code>

바인드 사용:

또는 지도 콜백 함수를 React 구성 요소의 컨텍스트에 수동으로 바인딩할 수 있습니다.

<code class="javascript">{this.state.initialPlayers.map(function(player, index) {
    return (
        <Player
            name={player.name}
            score={player.score}
            key={player.id}
            index={index}
            onScoreChange={this.onPlayerScoreChange.bind(this)}
        />
    );
}).bind(this)}</code>

다음 중 하나를 구현하여 이러한 메서드 중 this 컨텍스트는 올바르게 바인딩되어 지도 콜백 함수 내에서 React 구성 요소의 속성에 액세스하고 "정의되지 않은" 오류를 방지할 수 있습니다.

위 내용은 React의 Map 함수를 사용하여 \'TypeError: 정의되지 않은 속성을 읽을 수 없습니다\'를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.