reactjs Next.js第14章-第12章-将表单与服务器操作一起使用-提交表单而不调用服务器操作

kuhbmx9i  于 6个月前  发布在  React
关注(0)|答案(1)|浏览(87)

我正在学习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,以确认实际的提交工作正常
  • 我在操作中加入了简单的函数,以确认“客户端行为”也能正常工作
  • 我尝试清除缓存等,以排除浏览器问题

我甚至创建了一个全新的项目来制作完全相同的简单场景,但它也不工作。我做错了什么?


的数据

b09cbbtk

b09cbbtk1#

所以我发现了这个问题,这是非常尴尬的,我将分享。当然,它会帮助那些谁没有看到它像我一样。
代码工作正常,但我在控制台(“处理表单”)中看不到任何内容的原因很明显:操作是服务器端的(“使用服务器”),所以我永远不会在浏览器的控制台中看到任何内容。
我需要查看一下终端(我运行npm start的cmd),因为这是登录服务器日志的地方。
当然,我的日志在那里,所以行动是工作的整个时间。
杀了我吧

相关问题