Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengikat Fungsi dengan Betul dalam Lelaran Peta Reaksi?

Bagaimana untuk Mengikat Fungsi dengan Betul dalam Lelaran Peta Reaksi?

Patricia Arquette
Lepaskan: 2024-10-20 06:30:02
asal
500 orang telah melayarinya

How to Bind Functions Correctly in React Map Iterations?

Fungsi Mengikat dalam Lelaran Peta Reaksi

Pernyataan Masalah

Apabila menggunakan fungsi peta dalam React, pembangun mungkin menghadapi ralat, "TypeError: Cannot baca sifat yang tidak ditentukan." Ralat ini berlaku apabila kaedah tertentu, seperti onPlayerScoreChange, dipanggil dalam fungsi peta, tetapi ia tidak diikat dengan betul.

Memahami Hierarki Komponen

Dalam aplikasi React yang diberikan, aliran data dan hierarki komponen distrukturkan seperti berikut:

  • Komponen Datuk Nenek: Apl berinteraksi dengan komponen cucu dan mengendalikan kaedah onPlayerScoreChange.
  • Anak Komponen: Pemain menerima data daripada datuk dan nenek dan menyerahkannya kepada komponen cucu.
  • Komponen Cucu: Kaunter mengendalikan input pengguna dan berinteraksi dengan kaedah onPlayerScoreChange dalam komponen datuk dan nenek.

Fungsi Mengikat untuk Fungsi Peta

Ralat timbul kerana kaedah onPlayerScoreChange tidak terikat dengan betul dalam fungsi peta dalam komponen datuk nenek. Pengikatan adalah penting apabila menggunakan fungsi dalam lelaran peta kerana konteks fungsi peta berbeza daripada konteks komponen React. Akibatnya, ini dalam fungsi peta tidak merujuk kepada komponen React, menyebabkan isu akses kepada sifatnya.

Terdapat dua cara biasa untuk menyelesaikannya:

Menggunakan Fungsi Anak Panah

Fungsi anak panah mengikat konteks komponen secara tersirat. Dalam kes ini, kod berikut akan menyelesaikan ralat:

<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>
Salin selepas log masuk

Menggunakan Pengikatan Fungsi Secara Eksplisit

Pendekatan lain ialah dengan mengikat fungsi secara eksplisit menggunakan kaedah bind. Ini boleh dicapai dengan menghantar konteks komponen ini sebagai hujah kepada kaedah ikatan:

<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)}
                    />
                )
            })}</code>
Salin selepas log masuk

Dengan menggunakan salah satu kaedah ini untuk mengikat kaedah onPlayerScoreChange dalam lelaran peta, ralat harus diselesaikan .

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Fungsi dengan Betul dalam Lelaran Peta Reaksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan