
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi kamu harus copy-paste struktur HTML button yang sama ke sepuluh file view yang berbeda. Pasti pernah ngerasa gemas sendiri kan, pas tiba-tiba ada perubahan warna atau class CSS, terus harus bongkar satu-satu filenya? Di Laravel, ini masalah klasik yang bikin teknikal debt menumpuk tanpa disadari.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari memecah UI yang berulang menjadi komponen kecil di
resources/views/componentsbiar setiap perubahan cuma perlu edit satu file saja. - Saat ngerjain dashboard yang kompleks, saya selalu kasih default value di props untuk jaga-jaga kalau ada parameter yang lupa dikirim, supaya view-nya nggak langsung error atau hancur layout-nya.
- Daripada maksa semua logic di satu file, saya lebih suka manfaatin
attributes->merge()agar class dari parent tetap bisa masuk tanpa harus ribet ngatur manual di komponennya.
Contoh Kode
Ini cara saya bikin komponen button.blade.php yang fleksibel:
<button {{ $attributes->merge(['class' => 'px-4 py-2 bg-blue-500 text-white rounded']) }}>
{{ $slot }}
</button>Tinggal panggil di view mana pun: <x-button class="bg-red-500">Hapus Data</x-button>. Sesimpel itu buat ganti warna tanpa bikin button baru.
Variasi Implementasi
Kadang kita butuh komponen yang "pintar" dengan class PHP, pakai php artisan make:component. Kalau cuma butuh tampilan saja, anonimous component jauh lebih sat-set dan nggak bikin folder project penuh file class yang nggak perlu. Pilih class-based component cuma kalau emang butuh logic kalkulasi atau fetch data tambahan di dalamnya.
Kesalahan Umum
- Lupa pakai
$attributes->merge(), jadinya class CSS dari parent malah hilang ditimpa class komponen. - Terlalu banyak bikin komponen kecil yang cuma kepakai sekali, malah bikin navigasi file jadi ribet.
- Naruh logic yang terlalu berat (seperti query database kompleks) langsung di dalam view komponen, seharusnya ditaruh di Service atau Controller.
- Gagal kasih fallback value di props, alhasil error
undefined indexsering muncul di staging. - Maksa bikin komponen buat hal yang sebenarnya bisa di-handle dengan cukup pakai
@includeatau CSS utility biasa.
Ringkasan
Membuat komponen Blade itu bukan soal seberapa banyak file yang bisa kita buat, tapi seberapa nyaman kita maintain project dalam jangka panjang. Kalau pas refactor terasa ringan dan nggak banyak drama, berarti komponen yang kamu bangun udah on the right track. Happy coding!
Komentar
Posting Komentar