React Feature: Build a multi-step form in one file.

Woodelin florveus
4 min readJul 4, 2021

This multistep form feature can make a web application look more dynamic. In a project that I am currently creating, I decided to add a form. Unfortunately, I had a lot of form fields that didn’t go well with my site. My solution to this problem was to add a multistep form. However, I had no idea how to implement this feature in my project. I decided to do some research, mainly Youtube, resources were all over the internet at my disposal.

Constraints and Challenges

I wanted my multi-step form to have the same hooks and state as my other forms. There are not that many constraints and challenges when implementing this feature. My main concern was execution, following the conventional pattern of implementing a form with some conditional rendering. Furthermore, I thought I was going to need multiple pages, which we are going to get into that in another Blog. I didn’t know how I was going to add that to my form but with a bit more research it’s actually a simple process.

Implementation

The correct implementation would be as you would implement a regular form with useState and event handlers. I built this form in one file, rather than having multiple javascript files that have specific uses. I started with building out a traditional form with labels, inputs, and names.

Once that was completed I decided to implement my useState that would update and render my data. I set name, email, location, appointment, and more to empty strings.

Now that I have established the useState, I can proceed to handle the onChange event. I built a function that handles and updates the current state. In addition, I decided to implement this function to my form by adding it to the onChange event. Therefore upon submission, I can update the current state to whichever I choose.

Coupled with my form I can proceed in creating the back and forth button Below the form submission button I decided to add two buttons, the next and the previous page. Before getting this feature to work I had to add another useState feature. I set the state to current which would equal 1,

and the updated state to setCurrent. Second I decided to add features to my buttons by updating the onClick events. For the next page, I would update the SetCurrent to current + 1 and the previous to current — 1.

This feature allows us to paginate through pages effortlessly. Together with our form, useState, and buttons we can proceed to the last and final step conditional rendering. Before each section of the form, we would input some conditional rendering. For example, we would take the current state of 1, if it would equal to 1 we display that form of the section else we would render null. I would continuously do this throughout all sections. The final result would be a multistep form, stay tuned for part 2 having forms on different pages.

--

--