'use server'
'use server'
merkitsee palvelinpuolen funktioita, joita voidaan kutsua asiakaspuolen koodista.
Viite
'use server'
Lisää 'use server';
async funktion alkuun merkitsemään että funktiota voidaan kutsua asiakaspuolelta.
async function addToCart(data) {
'use server';
// ...
}
// <ProductDetailPage addToCart={addToCart} />
Tämä funktio voidaan välittää asiakkaalle. Kun sitä kutsutaan asiakaspuolella, se tekee verkkopyynnön palvelimelle, joka sisältää serialisoidun kopion kaikista annetuista argumenteista. Jos palvelimen funktio palauttaa arvon, se serialisoidaan ja palautetaan asiakkaalle.
Vaihtoehtoisesti, lisää 'use server';
tiedoston alkuun merkitsemään kaikki tiedoston exportit palvelinpuolen funktioiksi, joita voidaan käyttää missä tahansa, myös tuotuna asiakaspuolen komponenttitiedostoissa.
Rajoitukset
- Muista, että
'use server'
-merkittyjen funktioiden parametrit ovat täysin asiakkaan hallinnassa. Turvallisuuden vuoksi käsittele niitä aina epäluotettavana syötteenä ja varmista, että validoit ja escapeet argumentit asianmukaisesti. - Välttääksesi sekaannusta, joka voi johtua asiakas- ja palvelinpuolen koodin sekoittamisesta samassa tiedostossa,
'use server'
voidaan käyttää vain palvelinpuolen tiedostoissa; tuloksena olevia funktioita voidaan välittää asiakaspuolen komponenteille propsina. - Koska taustalla olevat verkkopyynnöt ovat aina asynkronisia,
'use server'
voidaan käyttää vain async funktioissa. - Direktiivit kuten
'use server'
on oltava funktion tai tiedoston alussa, ennen kaikkia tuontilausekkeita tai muuta koodia (kommentit direktiivien yläpuolella on OK). Ne on kirjoitettava yksittäisillä tai kaksinkertaisilla lainausmerkeillä, ei gravismerkeillä. (Direktiivien muoto'use xyz'
muistuttaa jonkin verranuseXyz()
-Hookin nimeämiskäytäntöä, mutta samankaltaisuus on sattumanvaraista.)