React Post Form Data to API
Use React Hooks, Copy-Paste Code Available

This guide will teach you how to send form data to any API endpoint.
Create the React app
(if you're starting a brand new project)
In case you're starting a brand new project, you'll need some initial steps. One of the most straightforward ways is to use the create-react-app package. To start:
- Open the terminal and install the create-react-app package
npm install create-react-app --global - Go to the directory where you will store your project. For example
mkdir ~/react-project && cd ~/react-project - Then create your app in this folder; this will be your project root folder
npx create-react-app . - When the installation has finished, you can start the server
npm start
Use your favorite code editor to work with files in ~/react-project/src. You will be able to make a contact form there.
Create the form data hook
Create a new file called UseForm.js in the src folder. The hook will intercept regular form submit and will send JSON data to the API endpoint.
Create the form component
Create a new file called Form.js in the src folder. You can use any fields and any framework for styling it. For now, we're staying with the standard "Name," "Email," and "Message" for the simple contact form. We're also going to use TailwindCSS to make it beautiful, but you can use your own custom CSS code too.
Embed contact form into your app, enable styling
Open App.js in your src folder, add contact form component, and enable TailwindCSS. If it's an existing project, open the file where the contact form should appear. You need to:
- Import Form — line number #4
- Add TailwindCSS (the example is for demo purposes only, for the production please refer to the TailwindCSS installation) — line number #9
- Display Form — line number #24
Bonus: handle spam bots
If you're using HeroTofu forms backend it's easy to handle spam bots too. You have to check whenever the API returned 422 status code and redirect visitor to the captcha error page. This is done by modifying your hook around the line #34:
See the React contact form guide for a complete guide how to implement HeroTofu forms backend.