Skip to content
Snippets Groups Projects
SignUp.js 2.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ludvig Damberg's avatar
    Ludvig Damberg committed
    import React from 'react'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import {useState, useRef, useEffect} from 'react'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import axios from 'axios'
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    const USER_REGEX = /^[a-zA-Z][a-zA-Z0-9-_]{3,23}$/;
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    const SignUp = () => {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
      const userRef = useRef();
      const errRef = useRef();
    
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
        const[username,setUsername] = useState("")
        const[password,setPassword] = useState("")
        const[email,setEmail] = useState("")
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        const [validName, setValidName] = useState(false);
    
        const [errMsg, setErrMsg] = useState('');
        const [success, setSuccess] = useState(false);
    
        useEffect(() => {
          setErrMsg('');
      }, [username, password])
    
      useEffect(() => {
        const result = USER_REGEX.test(username);
       
        setValidName(result);
    }, [username])
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
    
        const handleSignup = () => {
          setSuccess(true);
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            
          console.log({email,username,password})
    
          const config = {
            headers: {
              "Content-type": "application/json",
            },
          };
    
            axios.post("http://localhost:5000/register", {email,username,password},config)
            .then((res) => {
                console.log(res.data)
            }).catch((err) => console.log(err))
    
        }
    
      return (
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    <>
                {success ? (
                    <section>
                        <h1>Success!</h1>
                        <p>
                        <a href="#">Sign In</a>
                        </p>
                    </section>
                ) : (
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        <div>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
          <h1>Register</h1>
    
          <label htmlFor="email">Email:</label>
            <input type='text' 
            placeholder='Email' 
            ref={userRef}
            autoComplete="off"
            onChange={(e) => setEmail(e.target.value)}
            />
            <label htmlFor="username">Username:</label>
            <input type='text'
             placeholder='Username' 
             ref={userRef}
             autoComplete="off"
             onChange={(e) => setUsername(e.target.value)}
             required
             />
            
    
            <label htmlFor="password">Password:</label> 
            <input type='password' 
            placeholder='Password' 
            onChange={(e) => setPassword(e.target.value)}
            value={password}/>
            
            <button disabled={!validName ? true : false} 
            onClick={handleSignup}>
              Sign up
              </button>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
        </div>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
         )}
         </>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
      )
    }
    
    export default SignUp