Using Local Storage in a React App

import { useState } from "react"

// App Component
function App() {
  // Declaring two state objects `formData` and `showMessage`
  // formData keeps track of all form elements and their changes
  // showMessage when set to `true` renders a message to the user upon form submission
  const [formData, setFormData] = useState( { username: localStorage.getItem("username") || "" } )
  const [showMessage, setShowMessage] = useState(false)

  const handleChange = (event) => {
    setShowMessage(false)

    const { value, name } = event.target

    setFormData((prevValues) => {
      return {
        ...prevValues, 
        [name]: value
      }
    })
  }

  const handleSubmit = (event) => {
    event.preventDefault()

    // saving the `username` to localStorage using the key `username`
    localStorage.setItem("username", formData.username)

    // setting state here to true will render a message to the user
    setShowMessage(true)
  }

  return (
    <div className="App">
      <h1>Local Storage</h1> 

      <form>
        <div>
          <input onChange={handleChange} type="text" placeholder="enter your username" name="username" value={formData.username}/>
        </div>
        <br />
        <div>
          <button type="button" onClick={handleSubmit}>Submit</button>
        </div>
      </form>

      {/* Using conditional rendering to show a message to the user upon form submission */}
      {
        showMessage &&
        <p>Thanks, <b>@{formData.username}</b> for using local storage. Your usename is now stored in the Browser.</p>
      }
    </div>
  )
}

export default App

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s