⊗jsrtPmRtGLDP 36 of 47 menu

URL Parametreleri ile Yükleyici Verilerini Alma React Router'da

Önceki derste, ürün sayfası verilerini almak için bir fonksiyon yazdık, product.jsx dosyasına getProduct'ı içe aktaralım:

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

İçe aktarmadan hemen sonra ve Product fonksiyonundan önce loader yükleyici fonksiyonunu yazalım. URL parametrelerini ona iletilim:

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

Ayrıca, yükleyici tarafından alınan verileri kullanmak için useLoaderData kancasını içe aktaralım:

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

useLoaderData'ı uygulayalım, buna bağlı olarak Product fonksiyonunun başındaki product nesnesini oluşturan satırı aşağıdakiyle değiştirelim:

const { product } = useLoaderData();

Ve elbette, eski product nesnesini kaldırdığımız için biraz şablonumuzu değiştireceğiz. Paragrafların içeriğini değiştirelim:

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

Şununla:

<p>Name: {product.name ? product.name : <i>unnamed</i>}</p> <p>Cost: {product.cost ? product.cost : <i>unknown</i>}</p> <p>Amount: {product.amount ? product.amount : <i>unknown</i>}</p>

main.jsx'yi açıp oraya loader'ı içe aktarmamız kaldı, ona productLoader diyelim:

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

Ve onu ürün sayfası route nesnesi için yükleyici olarak belirlememiz gerekiyor, children içine element özelliğinden sonra ekleyelim:

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

Hepsi bu, ürün sayfası için veri yükleme ile işimiz bitti! Gerçi, şu an için yükleyecek bir şeyimiz yok. Uygulamayı başlatın, ürünler ekleyin ve her şeyin çalıştığından emin olmak için listede onlara tıklayın.

Önceki derslerin görevlerinde oluşturduğunuz uygulamayı alın. Dersteki materyalleri kullanarak, öğrenci sayfası için loader'ı uygulayın, bağlayın, ondan gelen verileri kullanın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet