Data Loading

Iya, di Next.js namanya data fetching, tapi di React Router nyebutnya data loading. Data loading diperluin kalo lo butuh ambil data saat halaman di-render, misalnya buat nge-fetch data dari API atau database.

React Router punya dua fungsi buat data loading: loader dan clientLoader. Seperti yang gue bahas sebelumnya, loader dieksekusi di server saat halaman di-render, sedangkan clientLoader dieksekusi di client/browser.

Contohnya gini:

app/routes/product.tsx

loaderData bakal otomatis di-infer tipe datanya dari return value loader. Tapi, kalo lo pake fetch, loaderData bakal jadi any. Ini karena data yang lo fetch bisa punya tipe yang beda-beda, tergantung dari API yang lo panggil.

Contohnya:

app/routes/product.tsx

Di kasus kayak gini, lo bisa bikin type guard manual atau pake library kayak zod:

app/routes/product.tsx

Kalo misalnya lo pake ORM kayak Drizzle, loader juga bisa langsung nge-return model yang udah di-infer tipe datanya. Contohnya:

app/routes/product.tsx

Dengan cara ini, loaderData di dalam component Product bakal otomatis punya tipe yang sesuai dengan model products.

Fungsi loader ini juga bakal dihapus dari client bundle, jadi lo aman buat pake API yang cuman boleh jalan di server.


Kamu Menyelesaikan Pelajaran Ini

Login untuk menyimpan progres belajarmu.


Kamu stuck? Ajukan pertanyaan!

Kolom ini hanya untuk pertanyaan terkait masalah yang mungkin kamu temui, tidak untuk yang lain.

Login untuk berkomentar 🔒

Markdown