⊗jsrtPmRtGLDP 36 of 47 menu

React Router에서 URL 매개변수를 통해 로더 데이터 가져오기

지난 강의에서 상품 페이지 데이터를 가져오는 함수를 작성했으니, product.jsx 파일에서 getProduct를 임포트하겠습니다:

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

임포트 후 그리고 Product 함수 전에 로더 함수 loader를 작성하겠습니다. 여기에 URL 매개변수를 전달합니다:

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

로더에서 가져온 데이터를 사용하기 위해 훅 useLoaderData도 임포트합니다:

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

useLoaderData를 적용하고, 이에 따라 Product 함수 시작 부분의 객체 product 생성 라인을 다음으로 변경합니다:

const { product } = useLoaderData();

그리고 물론, 이전 객체 product를 제거했기 때문에 마크업을 약간 변경하겠습니다. 단락 내용을 변경합니다:

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

다음과 같이 변경합니다:

<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를 열고 loader를 임포트해야 합니다. 이를 productLoader라고 부르겠습니다:

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

그리고 상품 페이지 라우트 객체의 로더로 지정하여, children 내부의 element 속성 다음에 추가합니다:

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

이제 상품 페이지 데이터 로딩에 대해 모두 다뤘습니다! 다만, 아직 로드할 것이 없습니다. 앱을 실행하고, 상품을 몇 개 추가하고 목록에서 클릭해보며 모든 것이 작동하는지 확인하세요.

이전 강의 과제에서 만든 애플리케이션을 가져오세요. 강의 자료를 활용하여 loader를 구현하고, 연결한 후 학생 페이지에 해당 데이터를 사용하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부