Biểu mẫu có thể hoạt động
Thuộc phần Kiến thức thiết yếu về Next.js trong hành trình React của Coddy. Bài học 30 trên 47.
Trong HTML thuần, action của biểu mẫu là một URL để gửi yêu cầu POST đến. Trong Next.js, bạn có thể truyền vào đó một hàm (function):
import { addItem } from './actions';
<form action={addItem}>
<input name="text" />
<button type="submit">Add</button>
</form>Khi gửi biểu mẫu, React làm ba việc thay bạn: ngăn trình duyệt gửi biểu mẫu theo cách thông thường khiến trang tải lại, thu thập các trường có tên của biểu mẫu vào một đối tượng FormData và gọi hàm xử lý của bạn với đối tượng đó.
Hãy để ý những gì không có ở đây: không có onSubmit, không có event.preventDefault(), không có trạng thái. Và trang này vẫn là một Server Component: action là dữ liệu được truyền đi, không phải trình xử lý sự kiện, nên nó dễ dàng vượt qua ranh giới.
Có một điều bạn cần chuẩn bị: mục đã được lưu, nhưng danh sách trên màn hình vẫn chưa thay đổi. Máy chủ đã dựng trang và chưa có gì yêu cầu trang tải lại. Sau hai bài học nữa, bạn sẽ sửa việc này chỉ bằng một dòng.
Thử thách
Người mớiDanh sách mua sắm có một ô nhập và một nút, nhưng chúng chưa kết nối với máy chủ. Mình đã viết sẵn action cho bạn trong app/actions.js.
- Trong
app/page.jsx, nhậpaddItemtừ'./actions'. - Bọc ô nhập và nút trong
<form>cóid="add-form". - Đặt
action={addItem}cho biểu mẫu đó.
Giữ nguyên name="text" của ô nhập: action đọc trường này theo tên đó.
Tự làm thử
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức thiết yếu về Next.js
4Máy chủ và client
Hai loại thành phầnĐọc lỗiDòng 'use client'Giữ phần client nhỏ gọnMáy chủ bên trong clientTóm tắt: máy chủ và client7Điều hướng phía máy khách
Liên kết đang hoạt độngĐiều hướng bằng codeLọc bằng URLBộ xử lý tuyến đườngÔn tập: Điều hướng2Định tuyến và liên kết
Thư mục tạo thành tuyến đườngTuyến đường lồng nhauLiên kết các trangTuyến đường độngTrang không tìm thấyÔn tập: định tuyến3Bố cục và siêu dữ liệu
Bố cục gốcĐiều hướng dùng chungBố cục lồng nhauSiêu dữ liệu trangSiêu dữ liệu độngÔn tập: bố cục6Server Actions
Server Action là gìBiểu mẫu có thể hoạt độngĐọc dữ liệu biểu mẫuLàm mới trangÔn tập: Server Actions