React Academy · Oppitunti

Lomaketoiminnot: API-reittien korvaaminen mutaatioissa

Liitä Server Actions suoraan HTML-lomakkeiden toimintoihin ja toteuta lomakemutaatiot ilman ylimääräistä mallikoodia sekä täydellä uudelleenvalidoinnilla.

Oppitunti 2/413 vaihetta

Lomaketoiminnot: API-reittien korvaaminen mutaatioissa on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Perinteinen toimintamalli

Perinteisissä Next.js-sovelluksissa lomakkeiden lähetykset edellyttävät asiakaskomponenttia, jossa oleva onSubmit-käsittelijä kutsuu fetch()-funktiota tietojen POST-lähettämiseksi API-reitille. Tämä toimintamalli toimii, mutta edellyttää sekä asiakaspuolen fetch-logiikan että palvelinpuolen reittikäsittelijän erillistä kirjoittamista ja ylläpitoa.

Server Actions yksinkertaistavat lomakkeita

Server Actionsin avulla fetch-kutsu ja API-reitti korvataan yhdellä funktiolla. Lomake-elementti saa Server Actionin action-proppina: <form action={serverAction}>. React sieppaa lähetyksen ja kutsuu actionia lomaketietojen kanssa automaattisesti.

Lomakekenttien käyttäminen FormDatan avulla

Server Action saa lomakkeesta käynnistettäessä automaattisesti argumentikseen FormData-objektin. Yksittäisiä kenttiä käytetään formData.get('email')-kutsulla, joka palauttaa arvon merkkijonona. Kaikki tavalliset FormData-metodit ovat käytettävissä, mukaan lukien monivalintakenttiä varten tarkoitettu getAll().

Tulosten palauttaminen Server Actioneista

Server Action voi palauttaa serialisoitavan arvon, jota asiakas voi käyttää. Virheobjektin, kuten { error: 'Email already exists' }, tai onnistumislipun, kuten { success: true }, palauttaminen antaa asiakkaalle mahdollisuuden päivittää käyttöliittymän tilanteen mukaisesti ilman koko sivun uudelleenlatausta.

Sivukomponentit pysyvät yksinkertaisina

Koska lomakkeen action on Server Action, lomakkeen sisältävän sivun komponentin ei tarvitse olla Client Component. Palvelin renderöi lomakkeen staattisena HTML:nä, ja vain interaktiiviset osat, kuten virheen näyttäminen, tarvitsevat asiakaspuolen JavaScriptiä. Tämä pienentää asiakasbundlea huomattavasti.

Progressiivinen parannus sisäänrakennettuna

Lomake, jolla on action={serverAction}, toimii ilman JavaScriptin käyttöönottoa. Selain tekee tavallisen HTML-lomakkeen POST-pyynnön, palvelin suorittaa actionin ja palauttaa päivitetyn sivun. Tämä todellinen progressiivinen parannus tarkoittaa, että lomake toimii hallitusti myös rajoitetuissa ympäristöissä.

Tietojen uudelleenvalidointi muutoksen jälkeen

Kun Server Action muuttaa tietoja, välimuistissa olevat sivutiedot on päivitettävä. Kutsumalla revalidatePath('/dashboard')-funktiota actionin sisällä mitätöitte Next.js:n välimuistin kyseisen polun osalta, jolloin seuraava pyyntö noutaa tuoreet tiedot. Tämä on vakiintunut tapa pitää palvelimella renderöidyt sivut ajan tasalla muutosten jälkeen.

Välimuistin tarkkarajainen mitätöinti

revalidateTag('user-data') tarjoaa tarkemman välimuistin mitätöinnin kuin revalidatePath. Merkitsette fetch-kutsut tunnisteella next: { tags: ['user-data'] } ja mitätöitte sitten kaikki tunnisteella merkityt tiedot kerralla Server Actionin sisältä riippumatta siitä, millä poluilla tiedot näytetään.

Uudelleenohjaus Server Actionin jälkeen

Server Actions voivat ohjata käyttäjän uudelle sivulle onnistuneen muutoksen jälkeen kutsumalla redirect('/success')-funktiota next/navigation-moduulista. Uudelleenohjaus käsitellään palvelimella, joten selain saa asianmukaisen navigointivastauksen asiakaspuolen uudelleenohjauksen sijaan.

Lomakkeettomat muutokset startTransition-toiminnolla

Server Actions eivät rajoitu lomakkeiden lähetyksiin. Painikkeiden napsautuksia ja muita lomakkeettomia käynnistimiä varten actionin kutsu kannattaa kääriä rakenteeseen startTransition(() => action(arg)). Tämä merkitsee navigoinnin siirtymäksi, jolloin React voi pitää nykyisen käyttöliittymän näkyvissä, kun action suoritetaan palvelimella.

Validointi actioneissa

Server Actions ovat oikea paikka palvelinpuolen validointiin. Validoikaa FormData-kentät, palauttakaa validointivirheet, jos tarkistus epäonnistuu, ja jatkakaa muutokseen vasta, jos kaikki kentät ovat kelvollisia. Zodin kaltaiset kirjastot sopivat tähän hyvin: jäsentäkää FormData tyypitetyksi skeemaksi ja palauttakaa virhekartta virhetilanteessa.

FormDataa koskeva kysymys

Minkä argumentin Server Action saa, kun se käynnistetään lomakkeen lähetyksellä?

Oppitunnin kertaus

Server Actions korvaavat fetch + API-reitti -mallin lomakkeiden tietojen muuttamisessa. Lomakkeen action-prop voi vastaanottaa Server Actionin suoraan, ja toiminto saa argumentikseen FormData-objektin. Actionit palauttavat serialisoitavia tuloksia käyttöliittymän päivityksiä varten, tukevat revalidatePath- ja revalidateTag-funktioita välimuistin mitätöintiin ja toimivat progressiivisesti ilman JavaScriptiä.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Lomaketoiminnot: API-reittien korvaaminen mutaatioissa” ilmainen?

Kyllä – oppitunnin ”Lomaketoiminnot: API-reittien korvaaminen mutaatioissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Lomaketoiminnot: API-reittien korvaaminen mutaatioissa”?

Liitä Server Actions suoraan HTML-lomakkeiden toimintoihin ja toteuta lomakemutaatiot ilman ylimääräistä mallikoodia sekä täydellä uudelleenvalidoinnilla. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Lomaketoiminnot: API-reittien korvaaminen mutaatioissa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Palvelintoiminnot React 19:ssä ja Next.js:ssä
  2. Lomaketoiminnot: API-reittien korvaaminen mutaatioissa
  3. useActionState ja useFormStatus
  4. Progressiivinen parantaminen Server Actions -toiminnoilla
← Takaisin: React Academy