HTML is great for making your website look and work exactly how you want it to—but it can be a pain to work with. We’re here to make it easier and streamline the process of adding an HTML contact form to your website. It can also be a pain to make form data accessible to everyone on your team, so we’ll also show you how to integrate it with Google Sheets, which, chances are, you’re already using.
Stripe Elements are intended for building custom payment experiences. However, they require a server to submit the charge to Stripe. What if you’re a front end designer or developer that doesn’t want to build or maintain your own server? Or what if you’re working on a static site that doesn’t have a server? Well, this tutorial is for you!
In this tutorial we’ll create a payment form using Stripe Elements that submits to Formspree.
Formik is a form library that’s very flexible, but also has a concise interface that’s quick to learn. In this final part of our series on building React forms, we’ll rebuild the form from parts 1 and 2 with Formik. We’ll discuss some benefits a drawbacks of using Formik, and highlight the alternatives.
To recap: in Part 2 we created a controlled component form and implemented our own validation with useState and useEffects.
In Part 1 we talked about building a simple contact form using an uncontrolled component. In an uncontrolled component, validation is left up to the browser. As we discussed, this can lead to an inconsistent experience across browsers.
In this tutorial we’ll modify our basic form by taking control of the form’s state. In doing this we’ll create what React calls a “controlled component.” With a controlled component we’ll have more control over the form, allowing us to create a consistent validation experience, and customize it however we like.
There’s no “right way” to build forms in React and there are a lot of options. It’s simple enough to have a working form, but what about validation? Can you rely on the browser’s default validation, or should you write your own state handlers, or drop in a form library?