Server Actions are asynchronous functions that execute on the server in response to client-side events (like form submissions). They allow developers to handle sensitive operations and server-side logic without manually creating a separate API endpoint.
// app/actions/submit.js
import { saveFormData } from "../lib/api";
export async function submitForm(data) {
await saveFormData(data);
return { success: true };
}
// contactForm.js
"use client";
import { submitForm } from "../actions/submitForm";
export default function ContactForm() {
const handleSubmit = async (event) => {
event.preventDefault();
const formData = new FormData(event.target);
// Call the server action directly
const result = await submitForm(Object.fromEntries(formData));
if (result.success) {
alert("Form submitted successfully!");
}
};
return (
<form onSubmit={handleSubmit}>
<label>
Name:
<input type="text" name="name" required />
</label>
<label>
Email:
<input type="email" name="email" required />
</label>
<button type="submit">Submit</button>
</form>
);
}