⊗jsrtPmRtGLDP 36 of 47 menu

Mendapatkan Data Loader dari Parameter URL di React Router

Pada pelajaran sebelumnya, kita menulis fungsi untuk mendapatkan data halaman produk, mari impor getProduct di file product.jsx:

import { getProduct } from '../forStorage';

Tulis fungsi loader loader tepat setelah impor dan sebelum fungsi Product. Berikan parameter URL kepadanya:

export async function loader({ params }) { const product = await getProduct(params.productId); return { product }; }

Juga impor hook useLoaderData untuk menggunakan data yang didapatkan oleh loader:

import { useLoaderData } from 'react-router-dom';

Terapkan useLoaderData, dengan sesuai mengganti baris dengan pembuatan objek product di awal fungsi Product dengan yang berikut:

const { product } = useLoaderData();

Dan, tentu saja, kita akan ubah sedikit markup kita karena kita menghapus objek lama product. Ganti isi paragraf:

<p>Name: {product.name}</p> <p>Cost: {product.cost}</p> <p>Amount: {product.amount}</p>

Menjadi berikut:

<p>Nama: {product.name ? product.name : <i>unnamed</i>}</p> <p>Biaya: {product.cost ? product.cost : <i>unknown</i>}</p> <p>Jumlah: {product.amount ? product.amount : <i>unknown</i>}</p>

Kita tinggal membuka main.jsx dan menambahkan impor loader ke sana, sebut saja productLoader:

import Product, { loader as productLoader, } from './routes/product';

Dan tuliskan itu sebagai loader untuk objek rute halaman produk, menambahkannya ke children setelah properti element:

children: [ { path: 'products/:productId', element: <Product />, loader: productLoader, }, ],

Selesai, dengan memuat data untuk halaman produk kita sudah selesaikan! Namun, tidak ada yang bisa dimuat untuk saat ini. Jalankan aplikasi, tambahkan beberapa produk dan klik pada mereka di dalam daftar untuk memastikan semuanya bekerja.

Ambil aplikasi yang dibuat oleh Anda di tugas pelajaran sebelumnya. Dengan menggunakan materi pelajaran, implementasikan loader, sambungkanlah, gunakanlah data darinya untuk halaman dengan siswa.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak