⊗jsrtPmRtDER 38 of 47 menu

Създаване на маршрут за редактиране на данни в React Router

В предишния урок създадохме форма за редактиране в отделен React компонент EditProduct.

Сега нека напишем функция за зареждане за нов маршрут веднага след импортирането и преди функцията EditProduct. Тя ще бъде същата като в product.jsx. В функцията ще се предават URL параметри и след това ще получаваме продукта по неговия id:

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

Импортираме getProduct от forStorage.js:

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

А сега ще отворим нашия main.jsx и ще импортираме създадения от нас компонент EditProduct и зареждащия функция:

import EditProduct, { loader as editProductLoader } from './routes/edit';

След това ще добавим в масива children обект на маршрута за редактиране веднага след маршрута за продукт:

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

Сега нека стартираме приложението, да създадем продукт, да кликнем върху него, а след това върху бутона за редактиране и ще видим нашата форма.

Единственото, което още трябва да направим, е да се уверим, че в полетата на формата преди редактирането са заредени текущите данни. За това ние импортираме в edit.jsx куката useLoaderData:

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

И ще я приложим за получаване на данни от зареждащата функция във функцията EditProduct. Добавяме я преди командата return:

const { product } = useLoaderData();

Сега ще добавим във всеки таг input атрибут defaultValue със съответните стойности за всеки input. Например, първият input сега ще изглежда така:

<input placeholder="name" type="text" name="name" defaultValue={product.name} />

За останалите два input стойностите ще бъдат съответно 'product.cost' и 'product.amount'. Въпреки че засега нямаме данни във формата.

Вземете приложението, създадено от вас в задачите към предишните уроци. Използвайки материалите от урока, създайте функция loader в edit.jsx за маршрута за редактиране на данни за студент.

Добавете в масива children обект на маршрута за редактиране.

Добавете към вашата функция EditStudent необходимия код от урока.

Български
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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне