⊗jsrtPmRtDER 38 of 47 menu

Reitin luominen tietojen muokkaamiseen React Routerissa

Edellisellä oppitunnilla loimme lomakkeen muokkaamista varten erillisessä React komponentissa EditProduct.

Luodaan nyt loader-funktio uudelle reitille heti importtien jälkeen ja ennen funktiota EditProduct. Se on samanlainen kuin tiedostossa product.jsx. Funktiolle välitetään URL-parametrit ja sitten haemme tuotteen sen id:n perusteella:

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

Importoidaan getProduct tiedostosta forStorage.js:

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

Avataan nyt main.jsx ja importoidaan luomamme komponentti EditProduct ja loader:

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

Lisätään sitten children -taulukkoon reittiolio muokkausta varten heti tuotereitin jälkeen:

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

Käynnistetään nyt sovellus, luodaan tuote, klikataan sitä, ja sitten muokkauspainiketta ja näemme lomakkeemme.

Ainoa, meidän on vielä tehtävä niin, että lomakkeen kentissä muokkausta edeltävästi ovat nykyiset tiedot. Tätä varten importoidaan tiedostoon edit.jsx hook useLoaderData:

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

Ja käytetään sitä saamaan loaderin data funktiossa EditProduct. Lisätään se ennen komentoa return:

const { product } = useLoaderData();

Lisätään nyt jokaiselle input-tagille attribuutti defaultValue vastaavilla arvoilla jokaiselle inputille. Esimerkiksi, ensimmäinen input näyttää nyt tältä:

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

Kahdelle jäljelle jäävälle inputille arvot ovat vastaavasti 'product.cost' ja 'product.amount'. Tosiaan toistaiseksi datasta lomakkeessa meillä ei ole.

Ota edellisten oppituntien tehtävissä luomasi sovellus. Hyödynnä oppitunnin materiaaleja luodaksesi funktion loader tiedostoon edit.jsx opiskelijan tietojen muokkausreittiä varten.

Lisää children-taulukkoon reittiolio muokkausta varten.

Lisää funktiolle EditStudent oppitunnilla vaadittu koodi.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää