在React 應用程式中,遇到錯誤訊息「TypeError: Cannot read property 'onPlayerScoreChange' of undefined " 通常表示使用地圖函數時有綁定問題。以下是解決此問題的方法:
map 函數透過迭代現有數組並為每個元素呼叫回調函數來建立新數組。在回呼函數中,this 指的是全域上下文,而不是 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>
使用Bind:
或者,您可以手動將映射回調函數綁定到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中文網其他相關文章!