Memindahkan pekerjaan dari klien ke server Anda mudah dilakukan dengan tindakan server Next.

Rilis Next.js 13.4 hadir dengan router Aplikasi yang stabil dan kemampuan untuk melakukan mutasi data dengan tindakan server. Fitur ini adalah pengubah permainan mutlak karena memungkinkan Anda melakukan mutasi data sepenuhnya dari komponen server. Ini membawa sejumlah manfaat di berbagai bidang seperti kecepatan, keamanan, dan kinerja aplikasi secara keseluruhan.

Pelajari apa itu tindakan server dan cara menggunakan fitur baru ini di aplikasi Next.js Anda.

Apa Itu Tindakan Server?

Tindakan server memungkinkan Anda untuk menulis fungsi sisi server satu kali tepat di samping komponen server Anda. Ini sangat besar karena Anda tidak perlu lagi menulis rute API saat mengirimkan formulir atau melakukan mutasi data lainnya, termasuk Mutasi data GraphQL.

Anda dapat memiliki fungsi yang berjalan di server Anda, dan Anda kemudian dapat memanggilnya dari komponen klien atau server. Ini adalah fitur alfa di Next.js 13.4, dan dibangun di atas React Actions. Menggunakan tindakan server akan mengurangi JavaScript sisi klien, dan dapat membantu Anda membuat formulir yang ditingkatkan secara progresif.

Contoh Tindakan Server

Dengan tindakan server, Anda dapat melakukan mutasi di dalam Next.js, di server. Lihat fitur baru ini dengan contoh halaman Next.js yang menampilkan formulir yang memungkinkan Anda membuat postingan.

Berikut impornya:

impor Tautan dari"berikutnya/tautan"
impor FormGroup dari"@/komponen/FormGroup"
impor { tag validasi ulang } dari"berikutnya/cache"
impor { alihkan } dari"berikutnya/navigasi"

Sekarang untuk kode untuk membuat postingan. Fungsi ini adalah tindakan server; itu berjalan di server dan mengirimkan judul dan isi posting ke API (yang membuat posting di database):

asinkronfungsibuat Posting(data) {
"gunakan server"
const judul = data.get("judul")
const tubuh = data.dapatkan("tubuh")

menunggu mengambil(" http://127.0.0.1/posts", {
tajuk: {"Jenis konten": "aplikasi/json"},
metode: POS,
tubuh: JSON.stringify({judul, isi})
})

validasi ulangTag("postingan")
mengalihkan("/")
}

Fungsi ini mendapatkan judul dan isi posting yang kemudian dikirim ke /posts titik akhir melalui permintaan POST. Ini kemudian memaksa cache untuk me-refresh konten yang terkait dengan tag "posts", dan mengalihkan kembali ke beranda.

Berikut ini formulir untuk mengumpulkan judul dan isi posting baru:

eksporbawaan FormulirPostBaru() {
kembali (