ReactJS #12: Fetch API Part 2
Menampilkan Data dari API ke Layar
(Buat Jadi List atau Card)
Halo, arsitek tampilan! 🎨
Di artikel #11 kita sudah bisa mengambil data dari API. Sekarang saatnya membuat data itu terlihat cantik di layar. Kita akan belajar mengubah data mentah menjadi daftar (list) yang rapi atau kartu (card) yang menarik. Bayangkan kita punya setumpuk foto, kita bisa menatanya di atas meja (list) atau menempelkannya di papan selancar (card).
Data mentah → Daftar → Kartu-kartu cantik
📋 Menampilkan Data sebagai List (Daftar)
Bentuk paling sederhana adalah daftar vertikal. Cocok untuk menampilkan judul postingan, komentar, atau todo. Kita akan gunakan data posts dari JSONPlaceholder.
Buat komponen DaftarPostingan.js:
Kita menggunakan posts.map() untuk mengubah setiap item menjadi elemen JSX. Setiap item diberi key unik (biasanya id) agar React bisa melacaknya dengan baik.
🃏 Menampilkan Data sebagai Card (Kartu)
Sekarang kita buat tampilan yang lebih menarik: kartu-kartu yang bisa kita susun berdampingan. Kita akan gunakan data users.
Pertama, buat komponen KartuPengguna.js untuk satu kartu:
Kemudian komponen DaftarPengguna yang mengambil data dan merender banyak kartu:
Perhatikan:
- Kita menggunakan
card-containerdengan CSSdisplay: flex; flex-wrap: wrap;untuk menyusun kartu secara grid. - Setiap kartu diberi lebar tetap (250px) agar rapi.
- Komponen
KartuPenggunamenerima propsuserdan menampilkan detailnya.
🎨 Menambahkan Sedikit Gaya (CSS)
Kita sudah menggunakan kelas CSS seperti card dan card-container. Di artikel blog, kamu bisa menambahkan CSS di file style.css global atau di dalam komponen dengan style={{}}. Tapi lebih baik pakai CSS terpisah.
Contoh CSS untuk kartu (sudah ada di <style> artikel ini):
🧩 Memisahkan Komponen yang Bertanggung Jawab
Salah satu kehebatan React adalah kita bisa memecah tampilan menjadi komponen-komponen kecil. Misalnya:
DaftarPengguna– bertugas mengambil data dan mengatur tata letak.KartuPengguna– bertugas menampilkan satu pengguna.
Dengan pemisahan ini, kode lebih rapi dan mudah diperbaiki. Jika ingin mengubah tampilan kartu, kita cukup edit KartuPengguna, tanpa mengganggu bagian pengambilan data.
🧪 Latihan: Galeri Foto Album
Buat komponen GaleriFoto yang mengambil data dari https://jsonplaceholder.typicode.com/photos?_limit=10 (batasi 10 foto). Tampilkan dalam bentuk kartu yang berisi:
- Gambar kecil (thumbnail) dari properti
thumbnailUrl. - Judul foto.
- Beri efek hover yang keren.
Petunjuk: gunakan <img src={photo.thumbnailUrl} alt={photo.title} />.
Kerangka (coba selesaikan sendiri):
Kamu bisa mengganti _limit=10 dengan angka lain untuk mengambil lebih banyak foto.
/posts, /comments, /albums, /photos, /todos, /users. Coba eksplorasi sendiri!
🚀 Menampilkan Data yang Lebih Kompleks
Kadang data API berisi objek bersarang. Misalnya, dari /users, alamat (address) adalah objek. Kita bisa mengaksesnya seperti user.address.city. Pastikan data yang diharapkan ada (handle jika properti tidak ada).
Contoh aman:
Operator ?. (optional chaining) mencegah error jika address tidak ada.
📌 Kesimpulan
- Gunakan
.map()untuk merender kumpulan data menjadi elemen JSX. - Selalu beri
keyunik pada setiap elemen hasil map. - Pisahkan tampilan menjadi komponen kecil (misal
Card) agar kode rapi dan bisa dipakai ulang. - Atur tata letak dengan CSS (flexbox/grid) untuk membuat list atau grid card.
- Tangani data yang mungkin kosong dengan optional chaining atau nilai default.
Di artikel selanjutnya kita akan belajar menangani loading dan error dengan lebih baik serta membuat tombol "Muat Lebih Banyak". Sampai jumpa!