读取表单数据
本课属于 Coddy React 学习旅程的“Next.js 基础”单元。第 31 课,共 47 课。
你的操作接收一个参数:FormData 对象。它是浏览器内置的对象,你只需要用到它的一个方法:
export async function addNote(formData) {
const text = formData.get('text');
const author = formData.get('author');
saveNote(text, author);
}你传给 get() 的字符串不是输入框的 id,也不是它的标签,而是name 属性:
<input name="author" /> → formData.get('author')没有 name 的输入框对表单来说是不可见的。它会显示出来,你可以在里面输入内容,但它的值永远不会传过来:formData.get() 会返回 null。这是初次编写服务器操作表单时最常见的 bug,而且它会悄无声息地出错。
get() 始终返回字符串(或 null),因此需要转换数字字段:
const quantity = Number(formData.get('quantity'));挑战
简单笔记表单已经接好,但没有保存任何有用的内容:输入框没有 name,而操作会保存两个空字符串。
- 在
app/page.jsx中,给第一个输入框添加name="text",给第二个添加name="author"。 - 在
app/actions.js中,从formData读取这两个字段,而不是使用空字符串。
保持 id 不变,并保留 saveNote(text, author) 调用:只需更改它上面的两个值。
亲手试试
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。