Managing form-action state, result, and pending status in one hook.
01
01
Understand the problem
reactreact-19hooksforms
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Explore the playground snippets
Form with useActionState (pending + result)
Run Playgroundimport { useActionState } from 'react';
// Pretend this calls your backend.
function fakeUpdate(name) {
return new Promise((resolve) =>
setTimeout(() => resolve(name.trim() ? 'Saved: ' + name : 'Name is required'), 800),
);
}
export default function App() {
const [message, submitAction, isPending] = useActionState(
async (prev, formData) => await fakeUpdate(formData.get('name')),
'No changes yet',
);
return (
<div style={{ fontFamily: 'sans-serif', padding: 24 }}>
<form action={submitAction}>
<input name="name" placeholder="Your name" />
<button disabled={isPending}>{isPending ? 'Saving…' : 'Save'}</button>
</form>
<p>{message}</p>
</div>
);
}05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.