UNPKG

http-response-handler

Version:

A comprehensive utility for standardizing HTTP responses in Node.js applications

68 lines (60 loc) 2.33 kB
import React, { useState } from 'react' import axios from 'axios' import { useNavigate } from 'react-router-dom'; export default function UserLogin() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [message, setMessage] = useState(null); const navigate = useNavigate(); const handleSubmit = async (e) => { e.preventDefault(); try { const response = await axios.post('http://localhost:5500/user/login', { email, password }); localStorage.setItem('token', response.data.token); localStorage.setItem('userData', JSON.stringify(response.data.user)); setMessage({ type: 'success', text: response.data.message }); navigate('/user'); } catch (error) { setMessage({ type: 'error', text: error.response?.data?.message || 'An error occurred during login' }); } }; return ( <div className="login-container"> <h2>Login</h2> <form onSubmit={handleSubmit}> <div className="form-group"> <label htmlFor="email">Email:</label> <input type="email" id="email" value={email} onChange={(e) => setEmail(e.target.value)} required /> </div> <div className="form-group"> <label htmlFor="password">Password:</label> <input type="password" id="password" value={password} onChange={(e) => setPassword(e.target.value)} required /> </div> {message && ( <div className={`message ${message.type}`}> {message.text} </div> )} <button type="submit">Login</button> </form> </div> ); }