Kami akan membuat game kecil selama tutorial ini. Anda mungkin tergoda untuk melewatkannya karena Anda tidak membuat game — tetapi berikan kesempatan. Teknik-teknik yang akan Anda pelajari dalam tutorial merupakan dasar untuk membangun aplikasi React apa pun, dan menguasainya akan memberi Anda pemahaman yang mendalam tentang React Show
Tutorial ini dibagi menjadi beberapa bagian
Anda tidak harus menyelesaikan semua bagian sekaligus untuk mendapatkan nilai dari tutorial ini. Cobalah untuk mencapai sejauh yang Anda bisa — meskipun hanya satu atau dua bagian Apa yang Kita Bangun?Dalam tutorial ini, kami akan menunjukkan cara membuat game tic-tac-toe interaktif dengan React Anda dapat melihat apa yang akan kami bangun di sini. Hasil Akhir. Jika kode tidak masuk akal bagi Anda, atau jika Anda tidak terbiasa dengan sintaks kode, jangan khawatir. Tujuan dari tutorial ini adalah untuk membantu Anda memahami React dan sintaksnya Kami menyarankan Anda memeriksa permainan tic-tac-toe sebelum melanjutkan tutorial. Salah satu fitur yang akan Anda perhatikan adalah adanya daftar bernomor di sebelah kanan papan permainan. Daftar ini memberi Anda riwayat semua gerakan yang telah terjadi dalam gim, dan diperbarui seiring berjalannya gim Anda dapat menutup permainan tic-tac-toe setelah Anda terbiasa dengannya. Kami akan memulai dari template yang lebih sederhana dalam tutorial ini. Langkah kami selanjutnya adalah menyiapkan Anda agar Anda dapat mulai membuat game PrasyaratKami akan berasumsi bahwa Anda memiliki pengetahuan tentang HTML dan JavaScript, tetapi Anda harus dapat mengikuti bahkan jika Anda berasal dari bahasa pemrograman yang berbeda. Kami juga akan berasumsi bahwa Anda terbiasa dengan konsep pemrograman seperti fungsi, objek, larik, dan pada tingkat yang lebih rendah, kelas Jika Anda perlu meninjau JavaScript, sebaiknya baca panduan ini. Perhatikan bahwa kami juga menggunakan beberapa fitur dari ES6 — JavaScript versi terbaru. Dalam tutorial ini, kami menggunakan fungsi panah, kelas, pernyataan 4, dan 5. Anda dapat menggunakan untuk memeriksa untuk apa kode ES6 dikompilasiPengaturan untuk TutorialAda dua cara untuk menyelesaikan tutorial ini. Anda dapat menulis kode di browser Anda, atau Anda dapat menyiapkan lingkungan pengembangan lokal di komputer Anda Opsi Pengaturan 1. Tulis Kode di BrowserIni adalah cara tercepat untuk memulai Pertama, buka Kode Pemula ini di tab baru. Tab baru akan menampilkan papan permainan tic-tac-toe kosong dan kode React. Kami akan mengedit kode React dalam tutorial ini Anda sekarang dapat melewati opsi pengaturan kedua, dan pergi ke bagian untuk mendapatkan gambaran umum tentang React Opsi Pengaturan 2. Lingkungan Pembangunan LokalIni sepenuhnya opsional dan tidak diperlukan untuk tutorial ini Opsional. Petunjuk untuk mengikuti secara lokal menggunakan editor teks pilihan Anda Penyiapan ini membutuhkan lebih banyak pekerjaan tetapi memungkinkan Anda menyelesaikan tutorial menggunakan editor pilihan Anda. Berikut langkah-langkah yang harus diikuti
Sekarang jika Anda menjalankan 4 di folder proyek dan membuka 5 di browser, Anda akan melihat bidang tic-tac-toe kosongKami merekomendasikan mengikuti petunjuk ini untuk mengonfigurasi penyorotan sintaks untuk editor Anda Tolong, saya TerjebakJika Anda buntu, periksa sumber daya dukungan komunitas. Secara khusus, Obrolan Reactilux adalah cara yang bagus untuk mendapatkan bantuan dengan cepat. Jika Anda tidak menerima jawaban, atau jika Anda tetap buntu, ajukan masalah, dan kami akan membantu Anda RingkasanSekarang setelah Anda siap, mari dapatkan ikhtisar tentang React Apa itu Bereaksi?React adalah pustaka JavaScript yang deklaratif, efisien, dan fleksibel untuk membangun antarmuka pengguna. Ini memungkinkan Anda membuat UI kompleks dari potongan kode kecil dan terisolasi yang disebut "komponen" React memiliki beberapa jenis komponen, tetapi kita akan mulai dengan 6 subkelas
Kami akan segera membahas tag mirip XML yang lucu. Kami menggunakan komponen untuk memberi tahu React apa yang ingin kami lihat di layar. Saat data kita berubah, React akan memperbarui dan merender ulang komponen kita secara efisien Di sini, ShoppingList adalah kelas komponen React, atau tipe komponen React. Komponen mengambil parameter, disebut _7 (singkatan dari "properti"), dan mengembalikan hierarki tampilan untuk ditampilkan melalui metode 8Metode 8 mengembalikan deskripsi tentang apa yang ingin Anda lihat di layar. React mengambil deskripsi dan menampilkan hasilnya. Secara khusus, _8 mengembalikan elemen React, yang merupakan deskripsi ringan tentang apa yang akan dirender. Sebagian besar pengembang React menggunakan sintaks khusus yang disebut "JSX" yang membuat struktur ini lebih mudah untuk ditulis. Sintaks 1 diubah pada waktu pembuatan menjadi 2. Contoh di atas setara dengan
Jika Anda penasaran, _3 dijelaskan lebih detail di , tetapi kami tidak akan menggunakannya dalam tutorial ini. Sebagai gantinya, kami akan tetap menggunakan JSXJSX hadir dengan kekuatan penuh JavaScript. Anda dapat menempatkan ekspresi JavaScript apa pun di dalam kurung kurawal di dalam JSX. Setiap elemen React adalah objek JavaScript yang dapat Anda simpan dalam variabel atau bagikan dalam program Anda Komponen _4 di atas hanya merender komponen DOM bawaan seperti 1 dan 6. Tapi Anda juga bisa membuat dan merender komponen React kustom. Misalnya, kita sekarang dapat merujuk ke seluruh daftar belanja dengan menulis 7. Setiap komponen React dienkapsulasi dan dapat beroperasi secara independen; Memeriksa Kode PemulaJika Anda akan mengerjakan tutorial di browser Anda, buka kode ini di tab baru. Kode Pemula. Jika Anda akan mengerjakan tutorial secara lokal, buka 8 di folder proyek Anda (Anda telah menyentuh file ini selama )Kode Pemula ini adalah dasar dari apa yang kami buat. Kami telah menyediakan gaya CSS sehingga Anda hanya perlu fokus mempelajari React dan memprogram game tic-tac-toe Dengan memeriksa kodenya, Anda akan melihat bahwa kami memiliki tiga komponen React
Komponen Kotak membuat 9 tunggal dan Papan membuat 9 kotak. Komponen Game merender papan dengan nilai placeholder yang akan kita ubah nanti. Saat ini tidak ada komponen interaktifMelewati Data Melalui Alat PeragaAgar kaki kita basah, mari kita coba meneruskan beberapa data dari komponen Board kita ke komponen Square kita Kami sangat menyarankan mengetik kode dengan tangan saat Anda mengerjakan tutorial dan tidak menggunakan copy/paste. Ini akan membantu Anda mengembangkan memori otot dan pemahaman yang lebih kuat Dalam metode 0 Board, ubah kode untuk meneruskan prop yang disebut 1 ke Square _Ubah metode _8 Square untuk menunjukkan nilai tersebut dengan mengganti 3 dengan 4
Sebelum Setelah. Anda akan melihat angka di setiap kotak dalam output yang diberikan Lihat kode lengkapnya pada saat ini Selamat. Anda baru saja "menyerahkan prop" dari komponen Board induk ke komponen Square anak. Meneruskan props adalah bagaimana informasi mengalir di aplikasi React, dari orang tua ke anak Membuat Komponen InteraktifMari isi komponen Kotak dengan "X" saat kita mengkliknya. Pertama, ubah tag tombol yang dikembalikan dari fungsi 5 komponen Square menjadi ini
Jika Anda mengklik Kotak sekarang, Anda akan melihat 'klik' di konsol devtools browser Anda
Sebagai langkah selanjutnya, kami ingin komponen Kotak "mengingat" bahwa komponen itu diklik, dan mengisinya dengan tanda "X". Untuk "mengingat" sesuatu, komponen menggunakan status Bereaksi komponen dapat memiliki status dengan menyetel 1 di konstruktornya. _1 harus dianggap sebagai pribadi untuk komponen React yang didefinisikan di dalamnya. Mari simpan nilai Kotak saat ini di 1, dan ubah saat Kotak diklikPertama, kami akan menambahkan konstruktor ke kelas untuk menginisialisasi status
Sekarang kita akan mengubah metode ________8______8 Square untuk menampilkan nilai keadaan saat ini saat diklik
Setelah perubahan ini, tag 9 yang dikembalikan oleh metode Square 8 terlihat seperti ini 0Dengan memanggil 7 dari handler 8 dalam metode 8 Square, kita memberi tahu React untuk merender ulang Square itu setiap kali 9 diklik. Setelah pembaruan, _9 Square akan menjadi 02, jadi kita akan melihat 03 di papan permainan. Jika Anda mengeklik Kotak mana pun, _03 akan munculSaat Anda memanggil 05 dalam sebuah komponen, React juga secara otomatis memperbarui komponen anak di dalamnyaLihat kode lengkapnya pada saat ini Alat pengembangEkstensi React Devtools untuk Chrome dan Firefox memungkinkan Anda memeriksa pohon komponen React dengan alat pengembang browser Anda React DevTools memungkinkan Anda memeriksa properti dan status komponen React Anda Setelah menginstal React DevTools, Anda dapat mengeklik kanan elemen apa pun di halaman, klik "Periksa" untuk membuka alat pengembang, dan tab React ("⚛️ Komponen" dan "⚛️ Profiler") akan muncul sebagai tab terakhir ke . Gunakan “⚛️ Komponen” untuk memeriksa pohon komponen Namun, perhatikan ada beberapa langkah tambahan untuk membuatnya berfungsi dengan CodePen
Menyelesaikan PermainanKami sekarang memiliki blok bangunan dasar untuk permainan tic-tac-toe kami. Untuk memiliki permainan yang lengkap, sekarang kita perlu menempatkan "X" dan "O" secara bergantian di papan, dan kita memerlukan cara untuk menentukan pemenang Mengangkat StatusSaat ini, setiap komponen Kotak mempertahankan status permainan. Untuk memeriksa pemenang, kami akan mempertahankan nilai masing-masing dari 9 kotak di satu lokasi Kami mungkin berpikir bahwa Dewan seharusnya hanya meminta setiap Kotak untuk status Kotak. Meskipun pendekatan ini dimungkinkan di React, kami tidak menyarankannya karena kodenya menjadi sulit dipahami, rentan terhadap bug, dan sulit untuk di-refactor. Alih-alih, pendekatan terbaik adalah menyimpan status game di komponen Papan induk alih-alih di setiap Kotak. Komponen Papan dapat memberi tahu setiap Kotak apa yang harus ditampilkan dengan memberikan penyangga, Untuk mengumpulkan data dari beberapa turunan, atau agar dua komponen turunan saling berkomunikasi, Anda perlu mendeklarasikan status bersama di komponen induknya. Komponen induk dapat meneruskan status kembali ke anak-anak dengan menggunakan alat peraga; Mengangkat status ke dalam komponen induk adalah hal biasa ketika komponen React difaktorkan ulang — mari gunakan kesempatan ini untuk mencobanya Tambahkan konstruktor ke Papan dan atur status awal Papan agar berisi larik 9 nol yang sesuai dengan 9 kotak 1Saat kita mengisi papan nanti, larik 06 akan terlihat seperti ini 2Metode Dewan _0 saat ini terlihat seperti ini _3Pada awalnya, kami dari Papan menunjukkan angka dari 0 hingga 8 di setiap Kotak. Pada langkah sebelumnya yang berbeda, kami mengganti angka dengan tanda “X”. Inilah mengapa Square saat ini mengabaikan prop 1 yang diteruskan oleh DewanKami sekarang akan menggunakan mekanisme prop passing lagi. Kami akan memodifikasi Papan untuk menginstruksikan setiap Kotak individu tentang nilainya saat ini ( 02, 11, atau 12). Kami telah mendefinisikan array 13 di konstruktor Board, dan kami akan memodifikasi metode 0 Board untuk membacanya _4Lihat kode lengkapnya pada saat ini Setiap Kotak sekarang akan menerima penyangga _1 yang akan menjadi 02, 11, atau 12 untuk kotak kosongSelanjutnya, kita perlu mengubah apa yang terjadi saat Kotak diklik. Komponen Dewan sekarang mempertahankan kotak mana yang diisi. Kita perlu membuat cara agar Square memperbarui status Dewan. Karena status dianggap pribadi untuk komponen yang mendefinisikannya, kami tidak dapat memperbarui status Dewan secara langsung dari Kotak Sebagai gantinya, kami akan meneruskan fungsi dari Papan ke Kotak, dan kami akan membuat Kotak memanggil fungsi tersebut saat kotak diklik. Kami akan mengubah metode _0 di Board menjadi 5
Sekarang kami memberikan dua properti dari Board ke Square. 1 dan 8. Prop _8 adalah fungsi yang dapat dipanggil Square saat diklik. Kami akan membuat perubahan berikut pada Kotak
Setelah perubahan ini, komponen Kotak terlihat seperti ini _6Saat Kotak diklik, fungsi 8 yang disediakan oleh Papan akan dipanggil. Berikut ulasan tentang bagaimana hal ini dicapai
Saat kami mencoba mengklik Kotak, kami akan mendapatkan kesalahan karena kami belum menentukan 44. Kami sekarang akan menambahkan _44 ke kelas Dewan _7Lihat kode lengkapnya pada saat ini Setelah perubahan ini, kami kembali dapat mengklik Kotak untuk mengisinya, sama seperti sebelumnya. Namun, sekarang status disimpan dalam komponen Board, bukan di komponen Square individual. Saat status Papan berubah, komponen Kotak akan dirender ulang secara otomatis. Menjaga status semua kotak di komponen Papan akan memungkinkannya menentukan pemenang di masa mendatang Karena komponen Kotak tidak lagi mempertahankan keadaan, komponen Kotak menerima nilai dari komponen Papan dan menginformasikan komponen Papan saat diklik. Dalam istilah React, komponen Square sekarang adalah komponen yang dikontrol. Dewan memiliki kendali penuh atas mereka Perhatikan bagaimana di _44, kami memanggil 50 untuk membuat salinan larik 13 untuk diubah alih-alih memodifikasi larik yang ada. Kami akan menjelaskan mengapa kami membuat salinan larik 13 di bagian berikutnyaMengapa Kekekalan Itu PentingDalam contoh kode sebelumnya, kami menyarankan agar Anda membuat salinan larik 13 menggunakan metode 54 alih-alih memodifikasi larik yang ada. Sekarang kita akan membahas kekekalan dan mengapa kekekalan penting untuk dipelajariBiasanya ada dua pendekatan untuk mengubah data. Pendekatan pertama adalah memutasi data dengan langsung mengubah nilai data. Pendekatan kedua adalah mengganti data dengan salinan baru yang memiliki perubahan yang diinginkan Perubahan Data dengan Mutasi _8Perubahan Data Tanpa Mutasi _9Hasil akhirnya sama tetapi dengan tidak memutasikan (atau mengubah data yang mendasarinya) secara langsung, kita mendapatkan beberapa keuntungan yang dijelaskan di bawah ini Fitur Kompleks Menjadi SederhanaKekekalan membuat fitur kompleks lebih mudah diimplementasikan. Nanti dalam tutorial ini, kami akan menerapkan fitur "perjalanan waktu" yang memungkinkan kami meninjau riwayat permainan tic-tac-toe dan "melompat kembali" ke gerakan sebelumnya. Fungsionalitas ini tidak khusus untuk game — kemampuan untuk membatalkan dan mengulangi tindakan tertentu merupakan persyaratan umum dalam aplikasi. Menghindari mutasi data langsung memungkinkan kami menjaga versi riwayat game sebelumnya tetap utuh, dan menggunakannya kembali nanti Mendeteksi PerubahanMendeteksi perubahan pada objek yang bisa berubah itu sulit karena dimodifikasi secara langsung. Deteksi ini membutuhkan objek yang dapat diubah untuk dibandingkan dengan salinan dirinya sendiri sebelumnya dan seluruh pohon objek untuk dilalui Mendeteksi perubahan pada objek yang tidak dapat diubah jauh lebih mudah. Jika objek tetap yang direferensikan berbeda dari yang sebelumnya, maka objek tersebut telah berubah Menentukan Kapan Re-Render di ReactManfaat utama kekekalan adalah membantu Anda membuat komponen murni di React. Data yang tidak dapat diubah dapat dengan mudah menentukan apakah perubahan telah dilakukan, yang membantu menentukan kapan suatu komponen perlu dirender ulang Anda dapat mempelajari lebih lanjut tentang 55 dan bagaimana Anda dapat membuat komponen murni dengan membacaKomponen FungsiKami sekarang akan mengubah Kotak menjadi komponen fungsi Di React, komponen fungsi adalah cara yang lebih sederhana untuk menulis komponen yang hanya berisi metode 8 dan tidak memiliki statusnya sendiri. Alih-alih mendefinisikan kelas yang memperluas 6, kita dapat menulis fungsi yang mengambil 7 sebagai input dan mengembalikan apa yang harus dirender. Komponen fungsi tidak terlalu membosankan untuk ditulis dibandingkan kelas, dan banyak komponen dapat diekspresikan dengan cara iniGanti kelas Square dengan fungsi ini 0Kami telah mengubah 59 menjadi 7 kedua kali munculLihat kode lengkapnya pada saat ini
BergiliranKami sekarang perlu memperbaiki cacat yang jelas dalam permainan tic-tac-toe kami. huruf “O” tidak dapat ditandai di papan tulis Kami akan menetapkan langkah pertama menjadi "X" secara default. Kita dapat menyetel default ini dengan memodifikasi status awal di konstruktor Board kita 1Setiap kali pemain bergerak, _63 (boolean) akan dibalik untuk menentukan pemain mana yang pergi berikutnya dan status permainan akan disimpan. Kami akan memperbarui fungsi _44 Dewan untuk membalikkan nilai 63 2Dengan perubahan ini, “X” dan “O” dapat bergiliran. Cobalah Mari kita juga mengubah teks "status" di Board 8 sehingga menampilkan pemain mana yang mendapat giliran berikutnya 3Setelah menerapkan perubahan ini, Anda akan memiliki komponen Board ini 4Lihat kode lengkapnya pada saat ini Menyatakan PemenangSekarang kami menunjukkan giliran pemain mana yang berikutnya, kami juga harus menunjukkan kapan permainan dimenangkan dan tidak ada lagi giliran yang harus dilakukan. Salin fungsi pembantu ini dan tempel di akhir file 5Diberikan array 9 kotak, fungsi ini akan memeriksa pemenang dan mengembalikan 02, 11, atau 12 sebagaimana mestinyaKami akan memanggil _70 di fungsi Dewan 8 untuk memeriksa apakah seorang pemain telah menang. Jika seorang pemain menang, kami dapat menampilkan teks seperti “Pemenang. X” atau “Pemenang. HAI". Kami akan mengganti deklarasi 72 dalam fungsi 8 Dewan dengan kode ini 6Kami sekarang dapat mengubah fungsi _44 Papan untuk kembali lebih awal dengan mengabaikan klik jika seseorang telah memenangkan permainan atau jika Kotak sudah terisi 7Lihat kode lengkapnya pada saat ini Selamat. Anda sekarang memiliki permainan tic-tac-toe yang berfungsi. Dan Anda juga baru saja mempelajari dasar-dasar React. Jadi Anda mungkin adalah pemenang sebenarnya di sini Menambahkan Perjalanan WaktuSebagai latihan terakhir, mari kita buat "kembali ke masa lalu" ke gerakan sebelumnya dalam permainan Menyimpan Sejarah GerakanJika kita mengubah larik _13, mengimplementasikan perjalanan waktu akan sangat sulitNamun, kami menggunakan 54 untuk membuat salinan baru dari larik 13 setelah setiap gerakan, dan. Ini akan memungkinkan kita untuk menyimpan setiap versi terakhir dari larik 13, dan menavigasi di antara belokan yang telah terjadiKami akan menyimpan array _13 sebelumnya dalam array lain yang disebut 80. Array _80 mewakili semua status papan, dari langkah pertama hingga terakhir, dan memiliki bentuk seperti ini 8Sekarang kita perlu memutuskan komponen mana yang harus memiliki status 80Mengangkat Status, LagiKami ingin komponen Game tingkat atas menampilkan daftar gerakan sebelumnya. Ini akan memerlukan akses ke _80 untuk melakukan itu, jadi kami akan menempatkan status 80 di komponen Game tingkat atasMenempatkan status _80 ke dalam komponen Game memungkinkan kita menghapus status 13 dari komponen Papan turunannya. Sama seperti kita dari komponen Kotak ke dalam komponen Papan, kita sekarang mengangkatnya dari Papan ke komponen Game tingkat atas. Ini memberi komponen Game kontrol penuh atas data Papan, dan memungkinkannya menginstruksikan Papan untuk membuat giliran sebelumnya dari 80Pertama, kita akan menyiapkan status awal untuk komponen Game di dalam konstruktornya _9Selanjutnya, kita akan membuat komponen Board menerima 13 dan 8 props dari komponen Game. Karena kita sekarang memiliki penangan klik tunggal di Papan untuk banyak Kotak, kita harus meneruskan lokasi setiap Kotak ke penangan 8 untuk menunjukkan Kotak mana yang diklik. Berikut adalah langkah-langkah yang diperlukan untuk mengubah komponen Board
Komponen Dewan sekarang terlihat seperti ini _0Kami akan memperbarui fungsi ________8______8 komponen Game untuk menggunakan entri riwayat terbaru untuk menentukan dan menampilkan status game _1Karena komponen Game sekarang merender status game, kami dapat menghapus kode yang sesuai dari metode 8 Dewan. Setelah pemfaktoran ulang, fungsi ________8______8 Dewan terlihat seperti ini _2Terakhir, kita perlu memindahkan metode _44 dari komponen Board ke komponen Game. Kita juga perlu memodifikasi 44 karena status komponen Game disusun secara berbeda. Dalam metode 44 Game, kami menggabungkan entri riwayat baru ke 80 _3
Pada titik ini, komponen Dewan hanya memerlukan metode 0 dan 8. Status game dan metode _44 harus ada dalam komponen GameLihat kode lengkapnya pada saat ini Menampilkan Gerakan Masa LaluKarena kami merekam sejarah permainan tic-tac-toe, sekarang kami dapat menampilkannya kepada pemain sebagai daftar gerakan sebelumnya Kita telah mempelajari sebelumnya bahwa elemen React adalah objek JavaScript kelas satu; . Untuk merender beberapa item dalam React, kita dapat menggunakan larik elemen React Dalam JavaScript, array memiliki metode _10 yang biasa digunakan untuk memetakan data ke data lain, misalnya _4Dengan menggunakan metode _11, kita dapat memetakan riwayat perpindahan kita ke elemen React yang mewakili tombol di layar, dan menampilkan daftar tombol untuk "melompat" ke gerakan sebelumnyaAyo 11 melalui 80 dalam metode 8 Game _5Lihat kode lengkapnya pada saat ini Saat kita mengulangi array _80, variabel 16 mengacu pada nilai elemen 80 saat ini, dan 18 merujuk pada indeks elemen 80 saat ini. Kami hanya tertarik pada _18 di sini, karenanya 16 tidak ditugaskan untuk apa punUntuk setiap gerakan dalam riwayat permainan tic-tac-toe, kami membuat item daftar 22 yang berisi tombol 9. Tombol memiliki penangan 8 yang memanggil metode yang disebut 25. Kami belum menerapkan metode 26. Untuk saat ini, kita akan melihat daftar gerakan yang telah terjadi dalam game dan peringatan di konsol alat pengembang yang berbunyi
Mari kita bahas apa arti peringatan di atas Memilih KunciSaat kita merender daftar, React menyimpan beberapa informasi tentang setiap item daftar yang dirender. Saat kami memperbarui daftar, React perlu menentukan apa yang telah berubah. Kami dapat menambahkan, menghapus, mengatur ulang, atau memperbarui item daftar Bayangkan transisi dari _6ke _7Selain jumlah yang diperbarui, manusia yang membaca ini mungkin akan mengatakan bahwa kami menukar pesanan Alexa dan Ben dan memasukkan Claudia di antara Alexa dan Ben. Namun, Bereaksi adalah program komputer dan tidak tahu apa yang kami maksudkan. Karena React tidak dapat mengetahui maksud kita, kita perlu menentukan properti key untuk setiap item daftar untuk membedakan setiap item daftar dari saudara kandungnya. Salah satu opsi adalah menggunakan string 27, 28, 29. Jika kami menampilkan data dari database, ID database Alexa, Ben, dan Claudia dapat digunakan sebagai kunci _8Ketika daftar dirender ulang, React mengambil kunci setiap item daftar dan mencari item daftar sebelumnya untuk kunci yang cocok. Jika daftar saat ini memiliki kunci yang sebelumnya tidak ada, React membuat sebuah komponen. Jika daftar saat ini kehilangan kunci yang ada di daftar sebelumnya, React akan menghapus komponen sebelumnya. Jika dua tombol cocok, komponen yang sesuai akan dipindahkan. Kunci memberi tahu React tentang identitas setiap komponen yang memungkinkan React mempertahankan status di antara render ulang. Jika kunci komponen berubah, komponen akan dihancurkan dan dibuat ulang dengan status baru 30 adalah properti khusus dan dicadangkan di React (bersama dengan 31, fitur yang lebih canggih). Ketika sebuah elemen dibuat, React mengekstrak properti 30 dan menyimpan kunci langsung pada elemen yang dikembalikan. Meskipun _30 mungkin terlihat seperti milik 7, 30 tidak dapat dirujuk menggunakan 36. Bereaksi secara otomatis menggunakan _30 untuk memutuskan komponen mana yang akan diperbarui. Sebuah komponen tidak dapat menanyakan tentang ________12______30Sangat disarankan agar Anda menetapkan kunci yang tepat setiap kali membuat daftar dinamis. Jika Anda tidak memiliki kunci yang sesuai, Anda mungkin ingin mempertimbangkan untuk merestrukturisasi data Anda sehingga Anda memilikinya Jika tidak ada kunci yang ditentukan, React akan memberikan peringatan dan menggunakan indeks array sebagai kunci secara default. Menggunakan indeks array sebagai kunci bermasalah saat mencoba mengurutkan ulang item daftar atau memasukkan/menghapus item daftar. Melewati _39 secara eksplisit membungkam peringatan tetapi memiliki masalah yang sama dengan indeks array dan tidak direkomendasikan dalam banyak kasusKunci tidak harus unik secara global; Menerapkan Perjalanan WaktuDalam sejarah permainan tic-tac-toe, setiap langkah sebelumnya memiliki ID unik yang terkait dengannya. itu adalah nomor urut dari langkah tersebut. Gerakan tidak pernah diurutkan ulang, dihapus, atau disisipkan di tengah, jadi aman menggunakan indeks gerakan sebagai kunci Dalam metode 8 komponen Game, kita dapat menambahkan kunci sebagai 41 dan peringatan React tentang kunci akan hilang _9Lihat kode lengkapnya pada saat ini Mengklik salah satu tombol item daftar menimbulkan kesalahan karena metode ________12______42 tidak ditentukan. Sebelum kami menerapkan 42, kami akan menambahkan 44 ke status komponen Game untuk menunjukkan langkah mana yang sedang kami lihatPertama, tambahkan _45 ke status awal di 5 Game 0Selanjutnya, kita akan menentukan metode _42 di Game untuk memperbarui 44 itu. Kita juga menyetel 63 menjadi true jika angka yang kita ubah 44 menjadi genap _1Pemberitahuan dalam metode _42, kami belum memperbarui 80 milik negara. Itu karena pembaruan status digabungkan atau dengan kata yang lebih sederhana React hanya akan memperbarui properti yang disebutkan dalam metode 05 meninggalkan status yang tersisa apa adanya. Untuk info lebih lanjutKami sekarang akan membuat beberapa perubahan pada metode 44 Game yang aktif saat Anda mengeklik kotakStatus _44 yang telah kami tambahkan mencerminkan langkah yang ditampilkan kepada pengguna sekarang. Setelah kita melakukan langkah baru, kita perlu memperbarui 44 dengan menambahkan 57 sebagai bagian dari argumen 7. Ini memastikan kami tidak terjebak menunjukkan langkah yang sama setelah yang baru dibuatKami juga akan mengganti bacaan _59 dengan 60. Ini memastikan bahwa jika kita "kembali ke masa lalu" dan kemudian mengambil langkah baru dari titik itu, kita membuang semua sejarah "masa depan" yang sekarang salah. _2Terakhir, kami akan mengubah metode 8 komponen Game dari selalu merender langkah terakhir menjadi merender langkah yang saat ini dipilih sesuai dengan 44 _3Jika kita mengklik salah satu langkah dalam riwayat permainan, papan tic-tac-toe akan segera diperbarui untuk menunjukkan tampilan papan setelah langkah tersebut terjadi Lihat kode lengkapnya pada saat ini MembungkusSelamat. Anda telah membuat game tic-tac-toe itu
Kerja bagus. Kami harap Anda sekarang merasa memiliki pemahaman yang baik tentang cara kerja React Lihat hasil akhirnya di sini. Hasil Akhir Jika Anda memiliki waktu ekstra atau ingin melatih keterampilan Bereaksi baru Anda, berikut adalah beberapa ide untuk peningkatan yang dapat Anda lakukan pada permainan tic-tac-toe yang dicantumkan dalam urutan kesulitan yang meningkat
Sepanjang tutorial ini, kita menyentuh konsep React termasuk elemen, komponen, properti, dan status. Untuk penjelasan yang lebih mendetail tentang masing-masing topik ini, lihat dokumentasi lainnya. Untuk mempelajari lebih lanjut tentang mendefinisikan komponen, lihat referensi 6 API
Apakah Bereaksi untuk HTML atau js?Aplikasi React biasanya dibuat dengan satu elemen HTML .
Apakah Bereaksi dianggap sebagai JavaScript?React adalah pustaka JavaScript yang deklaratif, efisien, dan fleksibel untuk membuat antarmuka pengguna. Ini memungkinkan Anda membuat UI kompleks dari potongan kode kecil dan terisolasi yang disebut "komponen".
Apakah Bereaksi dan HTML sama?Penanganan event di HTML dan React berbeda satu sama lain dalam hal sintaksis dan beberapa aturan . Alasan di balik ini adalah bahwa React bekerja pada konsep DOM virtual, di sisi lain, HTML memiliki akses ke Real DOM sepanjang waktu.
Apakah react js lebih baik daripada HTML?React js adalah alat yang luar biasa untuk setiap pengembang yang mahir dalam HTML dan ingin merancang situs web dinamis yang lebih cepat . HTML adalah bahasa web, tetapi mendesain situs web dengan HTML saja bisa menjadi tugas yang berulang dan tidak praktis. |