Instagram
youtube
Facebook
Twitter

Forms

React Forms

  • Forms allow the user to interact with the web pages and gather information from the user.
  • Forms can perform many tasks such as authentication of the user, adding users, searching, filtering, etc.
  • A form can contain text fields, buttons, checkboxes, radio buttons, etc.
  • There are two types of form input in react: Uncontrolled and Controlled.

Uncontrolled Component

  • Uncontrolled inputs are similar to traditional HTML forms inputs.
  • To create an Uncontrolled component, you need to use ref to get the form's value from the DOM.
  • Example:
import React from 'react'; 
class App extends React.Component {  
  constructor(props) {  
      super(props);  
      this.updateSubmit = this.updateSubmit.bind(this);  
      this.input = React.createRef();  
  }  
  updateSubmit(event) {  
      alert('You have entered the UserName and CompanyName successfully.');  
      event.preventDefault();  
  }  
  render() {  
    return (  
      <form onSubmit={this.updateSubmit}>  
        <h1>Personal Form</h1>  
        <label> First Name:  
            <input type="text" ref={this.input} />  
        </label>  
        <label>  
            Last Name:  
            <input type="text" ref={this.input} />  
        </label>  
        <input type="submit" value="Submit" />  
      </form>  
    );  
  }  
}  
export default App;  

 

Controlled Component

  • In the controlled component, the input form is handled by a component other than DOM.
  • It use setState() method to update mutable state.
  • The controlled Component has functions that control the data passing into them on the onChange event.
  • The data is stored in state and updated with setState()
  • Example:
import React from 'react';  
class App extends React.Component {  
  constructor(props) {  
      super(props);  
      this.state = {value: ''};  
      this.handleChange = this.handleChange.bind(this);  
      this.handleSubmit = this.handleSubmit.bind(this);  
  }  
  handleChange(event) {  
      this.setState({value: event.target.value});  
  }  
  handleSubmit(event) {  
      alert('Hello ' + this.state.value);  
      event.preventDefault();  
  }  
  render() {  
      return (  
          <form onSubmit={this.handleSubmit}>  
            <h1>Form</h1>  
            <label>  
                Name:  
                <input type="text" value={this.state.value} onChange={this.handleChange} />  
            </label>  
            
            <input type="submit" value="Submit" />  
         </form>  
      );  
  }  
}  
export default App; 

 

Textarea Tag

  • Textarea is placed in the value attribute and it is managed by the value of textarea.
  • Example:
import { useState } from 'react';
import ReactDOM from 'react-dom/client';

function MyForm() {
  const [textarea, setTextarea] = useState(
    "The content of a textarea goes in the value attribute"
  );

  const handleChange = (event) => {
    setTextarea(event.target.value)
  }

  return (
    <form>
      <textarea value={textarea} onChange={handleChange} />
    </form>
  )
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyForm />);

 

Select Tag

  • In React, the Select tag is used to define a select value with a value attribute.
  • Example:
import React from 'react';  
class FlavorForm extends React.Component {
    constructor(props) {
      super(props);
      this.state = {value: 'coconut'};
  
      this.handleChange = this.handleChange.bind(this);
      this.handleSubmit = this.handleSubmit.bind(this);
    }
  
    handleChange(event) {
      this.setState({value: event.target.value});
    }
  
    handleSubmit(event) {
      alert('Your favorite fruit is: ' + this.state.value);
      event.preventDefault();
    }
  
    render() {
      return (
        <form onSubmit={this.handleSubmit}>
          <label>
            Pick your favorite fruit:
            <select value={this.state.value} onChange={this.handleChange}>
              <option value="grapefruit">Grapefruit</option>
              <option value="Kiwi">Kiwi</option>
              <option value="Apple">Apple</option>
              <option value="mango">Mango</option>
            </select>
          </label>
          <input type="submit" value="Submit" />
        </form>
      );
    }
  }
export default FlavorForm

 

Multiple Input Fields 

  •  Example of Multiple Input fields:
import { useState } from 'react';
import ReactDOM from 'react-dom/client';

function MyForm() {
  const [inputs, setInputs] = useState({});

  const handleChange = (event) => {
    const name = event.target.name;
    const value = event.target.value;
    setInputs(values => ({...values, [name]: value}))
  }

  const handleSubmit = (event) => {
    event.preventDefault();
    alert('Hello ' +inputs.username);
  }

  return (
    <form onSubmit={handleSubmit}>
      <label>Enter your name:
      <input 
        type="text" 
        name="username" 
        value={inputs.username || ""} 
        onChange={handleChange}
      />
      </label>
      <label>Enter your age:
        <input 
          type="number" 
          name="age" 
          value={inputs.age || ""} 
          onChange={handleChange}
        />
        </label>
        <input type="submit" />
    </form>
  )
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyForm />);
export default MyForm