const user = JSON.parse(localStorage.getItem('currentUser'));

Viewed 45

I don't get to find the error. Everytime I sign-in on my website, testing it with inputting wrong passwords, it gives me this error. I check console and go to the application and saw that "currentUser" and its value is undefined

Here is my Navbar.js: (This is where the error happens)

import React from 'react'

function Navbar() {
  const user = JSON.parse(localStorage.getItem('currentUser'));
  return (
    <div>
      <nav className="navbar navbar-expand-lg">
        <a className="navbar-brand" href="#">
          FiVe Star Hotels
        </a>
        <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
          <span className="navbar-toggler-icon"></span>
        </button>
        <div className="collapse navbar-collapse" id="navbarNav">
          <ul className="navbar-nav">
            {user ? (<><h1 style={{color : 'red'}}>{user.name}</h1></>) : (<>
              <li className="nav-item ">
                <a className="nav-link" href="/register">
                  Register
                </a>
              </li>
              <li className="nav-item">
                <a className="nav-link" href="/sign-in">
                  Sign-in
                </a>
              </li>
            </>)}

          </ul>
        </div>
      </nav>
    </div>
  )
}

export default Navbar

and my Loginscreen.js

import React, { useState, useEffect } from 'react'
import axios from 'axios'
import Loader from '../components/Loader'
import Error from '../components/Error'



function Loginscreen() {

  const [email, setemail] = useState('')
  const [password, setpassword] = useState('')
  const [loading, setloading] = useState(false);
  const [error, seterror] = useState();


  async function Login() {
      const user = {
  
        email,
        password,

      };
      try {
        setloading(true);
        const result = await axios.post('/api/users/sign-in', user).data
        setloading(false);

        localStorage.setItem('currentUser' , JSON.stringify(result));
        window.location.href='/home'

      } catch (error) {
        console.log(error)
        setloading(false);
        seterror(true)
        
      }

    }

  return (
    <div>
      {loading && (<Loader/>)}
      <div className="row justify-content-center mt-5">
        <div className="col-md-5 mt-5">   
          {error && (<Error message='Invalid Email or Password'/>)}
          <div className='bs'>
            <h2>Sign In</h2>
            <input type="text" className="form-control" placeholder="Your Email"
            value = {email} onChange = {(e) => { setemail(e.target.value) }}/>
            <input type="password" className="form-control" placeholder="Enter your password"
            value = {password} onChange = {(e) => { setpassword(e.target.value) }}/>

            <button className='btn btn-primary mt-3' onClick={Login}>Sign In</button>
          </div>
        </div>

      </div>
    </div>
  )
}

export default Loginscreen;

Pleae help me :( enter image description here

0 Answers
Related