bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths

Loading lesson path

Learn/React/React Core
React•React Core

React Forms - Checkbox

Checkbox

For checkboxes, use the checked attribute instead of value to control its state.

We'll use the useState Hook to manage the value of the textarea:

In the handleChange function, use the e.target.type property check if the current input is a checkbox or not.

Example

React uses the checked attribute to control the checkbox:

import { useState } from 'react';
import { createRoot } from 'react-dom/client';
function MyForm() {
 const [inputs, setInputs] = useState({});
 const handleChange = (e) => {
 const target = e.target;
 const value = target.type === 'checkbox' ? target.checked : target.value;
 const name = target.name;
 setInputs(values => ({...values, [name]: value}))
 }
 const handleSubmit = (event) => {
 let fillings = '';
 if (inputs.tomato) fillings += 'tomato';
 if (inputs.onion) {
 if (inputs.tomato) fillings += ' and ';
 fillings += 'onion';
 }
 if (fillings == '') fillings = 'no fillings';
 alert(`${inputs.firstname} wants a burger with ${fillings}`);
 event.preventDefault();
 };
 return ( <form onSubmit={handleSubmit}> <label>My name is: <input
 type="text"
 name="firstname"
 value={inputs.firstname}
 onChange={handleChange}
 /> </label>
 <p>I want a burger with:</p> <label>Tomato: <input
 type="checkbox"
 name="tomato"
 checked={inputs.tomato}
 onChange={handleChange}
 /> </label> <label>Onion: <input
 type="checkbox"
 name="onion"
 checked={inputs.onion}
 onChange={handleChange}
 /> </label> <button type="submit">Submit
 </form> )
}
createRoot(document.getElementById('root')).render( <MyForm /> );

Initial Values

To add initial values to the input fields in the example above, add the proper keys and values to the useState object:

Example

Use initial values for the input fields:

function MyForm() {
 const [inputs, setInputs] = useState({
 firstname: 'John', tomato: true, onion: false
 });
 ...

Previous

React Forms - Multiple Input Fields

Next

React Forms - Radio