我正在学习Next.js官方教程的第12章。链接在这里:https://nextjs.org/learn/dashboard-app/mutating-data
我最终完成了“3.从formData中提取数据”,我无法继续,因为点击提交按钮没有任何作用。
我有这样的actions.ts文件:
'use server';
export async function createInvoice(formData: FormData) {
const rawFormData = {
customerId: formData.get('customerId'),
amount: formData.get('amount'),
status: formData.get('status'),
};
// Test it out:
console.log(rawFormData);
}
字符串
我有一个类似于这样的.tsx的文件:
'use client';
...
import { createInvoice } from '@/app/lib/actions';
export default function Form({
customers,
}: {
customers: CustomerField[];
}) {
return (
<form action={createInvoice}>
...
<Button type="submit">Create Invoice</Button>
...
</form>
型
当我点击按钮时,什么都没有发生&任何地方都没有错误。
这有什么问题吗?有人知道为什么在提交时不调用该操作的原因吗?
我已经试过了:
- 我删除了该操作,并在表单上实现了onSubmit,以确认实际的提交工作正常
- 我在操作中加入了简单的函数,以确认“客户端行为”也能正常工作
- 我尝试清除缓存等,以排除浏览器问题
我甚至创建了一个全新的项目来制作完全相同的简单场景,但它也不工作。我做错了什么?
的数据
1条答案
按热度按时间b09cbbtk1#
所以我发现了这个问题,这是非常尴尬的,我将分享。当然,它会帮助那些谁没有看到它像我一样。
代码工作正常,但我在控制台(“处理表单”)中看不到任何内容的原因很明显:操作是服务器端的(“使用服务器”),所以我永远不会在浏览器的控制台中看到任何内容。
我需要查看一下终端(我运行npm start的cmd),因为这是登录服务器日志的地方。
当然,我的日志在那里,所以行动是工作的整个时间。
杀了我吧