Menu
CoddyTech

读取表单数据

本课属于 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'));
challenge icon

挑战

简单

笔记表单已经接好,但没有保存任何有用的内容:输入框没有 name,而操作会保存两个空字符串。

  1. 在 app/page.jsx 中,给第一个输入框添加 name="text",给第二个添加 name="author"。
  2. 在 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>
    );
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Next.js 基础中的所有课