nextjs
  1. nextjs-handling-form-submissions

Next.js Handling Form Submissions

Introduction

In this article, you will learn how to handle form submissions using Next.js. You'll learn the basic concepts of handling form submissions and how to use Next.js's built-in form handling capabilities with examples and code snippets.

Example

import { useState } from 'react'

export default function Form() {
  const [data, setData] = useState({name: '', email: ''})

  const handleSubmit = async (event) => {
    event.preventDefault()
    const response = await fetch('/api/submit-form', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    })
    const resData = await response.json()
    console.log(resData)
  }

  const handleChange = (event) => {
    setData({...data, [event.target.name]: event.target.value})
  }

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" name="name" value={data.name} onChange={handleChange} />
      <input type="email" name="email" value={data.email} onChange={handleChange} />
      <button type="submit">Submit</button>
    </form>
  )
}

Explanation

In this example, we define a form component using React's useState hook. The component has an initial data state object that holds the form fields' values. When the handleChange function is called on the input change event, it dynamically updates the data object according to the input field's name and value. When the form is submitted, handleSubmit function is called. We use the fetch API to make a POST request to our API endpoint /api/submit-form with the serialized JSON data to submit the form. We can console.log the response data to see what happened with our form submission.

Use

Handling form submissions is an essential part of building web applications. In Next.js, we can handle form submissions using API routes. We can create an API route to define how to handle incoming requests and return the response. Next.js provides us with built-in API routes, which are easy to create and implement using Axios or the Fetch API.

Important Points

  • Always use HTTPS for secure form submissions.
  • Always validate the form data on both client and server-side to prevent security breaches.
  • Next.js provides built-in API routes to handle form submissions.
  • We can fetch data from a form input field using the event.target.name and event.target.value properties.

Summary

Handling form submissions is essential when creating web applications. Next.js provides us with built-in API routes to handle form submissions with ease. We can use the useState hook to manage the form state and update the data according to the user's input. Lastly, it is important to validate the form input data both on client and server-side to ensure that malicious data is not submitted.

Published on: