ReactJS - Senarai: Panduan Pemula Bagi Mengendalikan Koleksi Data

Hai sana, bakal pengembang React! Hari ini, kita akan melihat salah satu konsep yang sangat penting dalam React: bekerja dengan senarai. Sebagai guru komputer tetangga yang ramah, saya disini untuk menghidahkanmu dalam perjalanan ini, langkah demi langkah. Jangan khawatir jika Anda baru saja memulai pemrograman – kita akan mulai dari dasar-dasar dan naik turun secara bertahap. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai!

ReactJS - Lists

Memahami Senarai dalam React

Sebelum kita melompat ke kode, mari bicarakan apa itu senarai dalam konteks React. Bayangkan Anda membuat aplikasi daftar tugas. Anda akan memiliki koleksi tugas, kan? Itu sebenarnya apa itu senarai – sebuah koleksi item yang mirip. Dalam React, kita seringkali perlu menampilkan koleksi ini dalam antarmuka pengguna.

Mengapa Senarai Penting

Senarai ada di mana-mana dalam aplikasi web. pikirkan tentang feed media sosial Anda, troli belanja, atau bahkan menu navigasi sederhana. Semua itu adalah senarai! Memahami bagaimana bekerja dengan senarai dalam React adalah sangat penting untuk membangun aplikasi dinamis dan berbasis data.

List dan For: Duo Dinamis

Dalam React, kita sering menggunakan kombinasi metode array JavaScript dan JSX untuk merender senarai. Mari kita mulai dengan contoh sederhana:

function FruitList() {
const fruits = ['Apple', 'Banana', 'Orange', 'Mango'];

return (
<ul>
{fruits.map((fruit, index) => (
<li key={index}>{fruit}</li>
))}
</ul>
);
}

mari kitauraikan ini:

  1. Kita memiliki array buah-buahan.
  2. Kita gunakan fungsi map untuk mengiterasi setiap buah.
  3. Untuk setiap buah, kita kembalikan elemen <li>.
  4. Prop key penting bagi React untuk mengikuti item senarai secara efisien.

Ketika Anda merender komponen ini, Anda akan melihat senarai buah-buahan yang bagus di halaman Anda. Keren, kan?

Pentingnya Keys

Anda mungkin telah mendengar key={index} dalam contoh kita. Keys membantu React mengidentifikasi item mana yang telah berubah, ditambahkan, atau dihapus. Selalu gunakan ID yang unik dan stabil untuk keys jika memungkinkan. Menggunakan indeks baik untuk senarai statis, tetapi dapat menyebabkan masalah dengan senarai dinamis.

function TodoList() {
const todos = [
{ id: 1, text: 'Belajar React' },
{ id: 2, text: 'Bangun aplikasi' },
{ id: 3, text: 'Deploy ke produksi' }
];

return (
<ul>
{todos.map(todo => (
<li key={todo.id}>{todo.text}</li>
))}
</ul>
);
}

Dalam contoh ini, kita menggunakan id dari setiap item todo sebagai key, yang adalah praktek yang baik.

Looping ECMAScript 6: Pendekatan Modern

Meskipun map bagus untuk transformasi sederhana, kadang-kadang kita perlu lebih banyak kontrol atas iterasi kita. Itu di mana loop for...of ECMAScript 6 menjadi berguna. Mari kita lihat contoh:

function NumberList() {
const numbers = [1, 2, 3, 4, 5];
const listItems = [];

for (let number of numbers) {
if (number % 2 === 0) {
listItems.push(<li key={number}>Genap: {number}</li>);
} else {
listItems.push(<li key={number}>Ganjil: {number}</li>);
}
}

return <ul>{listItems}</ul>;
}

Dalam contoh ini:

  1. Kita mulai dengan array angka.
  2. Kita gunakan loop for...of untuk mengiterasi setiap angka.
  3. Kita memeriksa jika angka itu genap atau ganjil.
  4. Berdasarkan kondisi, kita masukkan elemen JSX yang berbeda ke array listItems.
  5. Akhirnya, kita render listItems didalam <ul>.

Pendekatan ini memberikan kita fleksibilitas untuk menambahkan logika kompleks dalam loop.

Mengkombinasikan Map dan For...of

Kadang-kadang, Anda mungkin perlu mengkombinasikan teknik loop berbeda. Ini adalah contoh tingkat lanjut:

function NestedList() {
const data = [
{ category: 'Buah-buahan', items: ['Apel', 'Pisang', 'Jeruk'] },
{ category: 'Sayuran', items: ['Kol', 'Brokoli', 'Spinach'] }
];

return (
<div>
{data.map(category => (
<div key={category.category}>
<h2>{category.category}</h2>
<ul>
{(() => {
const listItems = [];
for (let item of category.items) {
listItems.push(<li key={item}>{item}</li>);
}
return listItems;
})()}
</ul>
</div>
))}
</div>
);
}

Contoh ini menunjukkan:

  1. Menggunakan map untuk mengiterasi kategori.
  2. Menggunakan fungsi segera dipanggil (IIFE) untuk membuat blok skop.
  3. Menggunakan for...of dalam IIFE untuk membuat item senarai.

Itu agak kompleks, tapi itu menunjukkan bagaimana Anda dapat mengkombinasikan teknik yang berbeda untuk mengendalikan struktur data bersarang.

Metode Senarai Umum dalam React

Mari rangkum beberapa metode umum yang digunakan untuk mengendalikan senarai dalam React:

Metode Deskripsi Contoh
map() Transformasi setiap item dalam array array.map(item => <li>{item}</li>)
filter() Membuat array baru dengan semua elemen yang lolos tes array.filter(item => item.length > 5)
reduce() Mengurangi array menjadi nilai tunggal array.reduce((acc, curr) => acc + curr, 0)
forEach() Menjalankan fungsi yang diberikan sekali untuk setiap elemen array array.forEach(item => console.log(item))
find() Mengembalikan elemen pertama dalam array yang memenuhi fungsi tes yang diberikan array.find(item => item.id === 3)

Metode ini sangat kuat dan dapat membantu Anda mengubah dan merender senarai dalam berbagai cara.

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia pengendalian senarai dalam React. Ingat, latihan membuat sempurna. Cobalah membuat jenis senarai yang berbeda, eksperimen dengan metode array berbeda, dan jangan takut membuat kesalahan – itu adalah bagaimana kita belajar!

Saat kita mengakhiri, ini adalah cerita kecil dari pengalaman mengajar saya: Pernah saya memiliki murid yang kesulitan dengan senarai di React. Dia terus mencampur map dan forEach. Jadi, saya katakan kepadanya untuk mengimaginasikan map sebagai tongkat sihir yang mengubah setiap item, sedangkan forEach adalah megaphon yang hanya mengumumkan setiap item tanpa mengubahnya. Dia tidak pernah lagi melupakan perbedaan itu!

Terus kode, terus belajar, dan terutama, bersenang-senang dengan React! Jika Anda pernah merasa terjebak, ingat: setiap pengembang yang hebat pernah menjadi pemula. Anda bisa melakukan ini!

Credits: Image by storyset