From de76b002632d28d6e815983da486ca0a52657121 Mon Sep 17 00:00:00 2001 From: Delba de Oliveira <32464864+delbaoliveira@users.noreply.github.com> Date: Wed, 19 Jun 2024 09:41:51 +0100 Subject: [PATCH] Replace `useFormStatus` and `useFormState` with `useActionState` (#748) --- dashboard/final-example/app/lib/actions.ts | 1 - .../app/ui/invoices/create-form.tsx | 6 +- .../app/ui/invoices/edit-form.tsx | 6 +- dashboard/final-example/app/ui/login-form.tsx | 23 ++- dashboard/final-example/package.json | 4 +- dashboard/final-example/pnpm-lock.yaml | 133 +++++++++++------- .../starter-example/app/ui/login-form.tsx | 12 +- dashboard/starter-example/next.config.mjs | 1 + 8 files changed, 100 insertions(+), 86 deletions(-) diff --git a/dashboard/final-example/app/lib/actions.ts b/dashboard/final-example/app/lib/actions.ts index 84007c9..2a6355b 100644 --- a/dashboard/final-example/app/lib/actions.ts +++ b/dashboard/final-example/app/lib/actions.ts @@ -24,7 +24,6 @@ const FormSchema = z.object({ const CreateInvoice = FormSchema.omit({ id: true, date: true }); const UpdateInvoice = FormSchema.omit({ date: true, id: true }); -// This is temporary export type State = { errors?: { customerId?: string[]; diff --git a/dashboard/final-example/app/ui/invoices/create-form.tsx b/dashboard/final-example/app/ui/invoices/create-form.tsx index 6012b30..e3cdc47 100644 --- a/dashboard/final-example/app/ui/invoices/create-form.tsx +++ b/dashboard/final-example/app/ui/invoices/create-form.tsx @@ -10,14 +10,14 @@ import { } from '@heroicons/react/24/outline'; import { Button } from '@/app/ui/button'; import { createInvoice, State } from '@/app/lib/actions'; -import { useFormState } from 'react-dom'; +import { useActionState } from 'react'; export default function Form({ customers }: { customers: CustomerField[] }) { const initialState: State = { message: null, errors: {} }; - const [state, dispatch] = useFormState(createInvoice, initialState); + const [state, formAction] = useActionState(createInvoice, initialState); return ( -
); } - -function LoginButton() { - return ( - - ); -} diff --git a/dashboard/starter-example/next.config.mjs b/dashboard/starter-example/next.config.mjs index 4678774..81aa05b 100644 --- a/dashboard/starter-example/next.config.mjs +++ b/dashboard/starter-example/next.config.mjs @@ -1,4 +1,5 @@ /** @type {import('next').NextConfig} */ + const nextConfig = {}; export default nextConfig;