Mendapatkan Data Pemuatan melalui Parameter URL dalam React Router
Dalam pelajaran lepas, kami menulis fungsi untuk
mendapatkan data halaman produk, mari
import getProduct dalam fail
product.jsx:
import { getProduct } from '../forStorage';
Tulis fungsi pemuat loader
sejurus selepas import dan sebelum fungsi
Product. Sampaikan parameter URL
kepadanya:
export async function loader({ params }) {
const product = await getProduct(params.productId);
return { product };
}
Juga import hook useLoaderData untuk
menggunakan data yang diperoleh oleh pemuat:
import { useLoaderData } from 'react-router-dom';
Gunakan useLoaderData, dengan sewajarnya
menggantikan baris dengan penciptaan objek product
pada permulaan fungsi Product dengan yang berikut:
const { product } = useLoaderData();
Dan, sudah tentu, ubah sedikit
markah kami, kerana kami membuang objek lama
product. Gantikan kandungan perenggan:
<p>Name: {product.name}</p>
<p>Cost: {product.cost}</p>
<p>Amount: {product.amount}</p>
Dengan yang berikut:
<p>Nama: {product.name ? product.name : <i>unnamed</i>}</p>
<p>Kos: {product.cost ? product.cost : <i>unknown</i>}</p>
<p>Kuantiti: {product.amount ? product.amount : <i>unknown</i>}</p>
Kami tinggal membuka main.jsx
dan tambah import loader di sana,
namakannya productLoader:
import Product, {
loader as productLoader,
} from './routes/product';
Dan nyatakannya sebagai pemuat
untuk objek laluan halaman produk,
menambahkannya ke dalam children
selepas sifat element:
children: [
{
path: 'products/:productId',
element: <Product />,
loader: productLoader,
},
],
Selesai, dengan memuatkan data untuk halaman produk kami telah selesai! Walaubagaimanapun, tiada apa untuk dimuatkan buat masa ini. Jalankan aplikasi, tambah beberapa produk dan klik pada mereka dalam senarai untuk memastikan semuanya berfungsi.
Ambil aplikasi yang dicipta oleh anda dalam
tugasan untuk pelajaran lepas. Dengan menggunakan
bahan-bahan pelajaran, laksanakan
loader, sambungkannya, gunakan
data daripadanya untuk halaman pelajar.