Menu
CoddyTech

Formulir yang Bertindak

Termasuk bagian Dasar-Dasar Next.js dalam perjalanan React di Coddy. Pelajaran 30 dari 47.

Dalam HTML biasa, action pada formulir adalah URL tujuan POST. Di Next.js, kamu bisa memberikan fungsi sebagai gantinya:

import { addItem } from './actions';

<form action={addItem}>
    <input name="text" />
    <button type="submit">Add</button>
</form>

Saat dikirimkan, React melakukan tiga hal untukmu: menghentikan pengiriman biasa yang memuat ulang halaman di browser, mengumpulkan kolom formulir yang memiliki nama ke dalam object FormData, dan memanggil action-mu dengan object tersebut.

Perhatikan apa yang tidak ada: tidak ada onSubmit, tidak ada event.preventDefault(), tidak ada state. Dan halaman ini tetap merupakan Server Component: action adalah data yang diteruskan, bukan event handler, jadi data tersebut dapat melewati batas dengan mudah.

Satu hal yang perlu kamu antisipasi: item sudah disimpan, tetapi list di layar belum akan berubah. Halaman sudah dirender di server, dan belum ada yang menyuruhnya untuk memeriksa kembali. Dua pelajaran lagi, kamu akan memperbaikinya dengan satu baris.

challenge icon

Tantangan

Pemula

shopping list memiliki input dan button, tetapi keduanya tidak terhubung ke server. action sudah ditulis untukmu di app/actions.js.

  1. Di app/page.jsx, impor addItem dari './actions'.
  2. Bungkus input dan button dengan <form> yang memiliki id="add-form".
  3. Berikan form tersebut action={addItem}.

Biarkan name="text" pada input apa adanya: action membaca field berdasarkan nama tersebut.

Coba sendiri

import './globals.css';

export const metadata = {
    title: 'My App',
};

export default function RootLayout({ children }) {
    return (
        <html lang="en">
            <body>
                {children}
            </body>
        </html>
    );
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Next.js