first commit
This commit is contained in:
55
src/hooks/useContactForm.js
Normal file
55
src/hooks/useContactForm.js
Normal file
@@ -0,0 +1,55 @@
|
||||
import { useState } from 'react'
|
||||
|
||||
const VALID_USER = {
|
||||
name: 'Teszt Elek',
|
||||
email: 'tesztelek@teszt.hu',
|
||||
}
|
||||
|
||||
function validate(name, email) {
|
||||
const errors = {}
|
||||
if (!name) errors.name = 'A név kötelező.'
|
||||
if (!email) errors.email = 'Az email kötelező.'
|
||||
else if (!/\S+@\S+\.\S+/.test(email)) errors.email = 'Érvénytelen email cím.'
|
||||
return errors
|
||||
}
|
||||
|
||||
export function useContactForm() {
|
||||
const [name, setName] = useState('')
|
||||
const [email, setEmail] = useState('')
|
||||
const [errors, setErrors] = useState({})
|
||||
const [loginError, setLoginError] = useState(null)
|
||||
const [success, setSuccess] = useState(false)
|
||||
|
||||
function handleSubmit(e) {
|
||||
e.preventDefault()
|
||||
|
||||
const newErrors = validate(name, email)
|
||||
if (Object.keys(newErrors).length > 0) {
|
||||
setErrors(newErrors)
|
||||
setLoginError(null)
|
||||
return
|
||||
}
|
||||
|
||||
setErrors({})
|
||||
|
||||
if (
|
||||
name.trim() === VALID_USER.name &&
|
||||
email.trim().toLowerCase() === VALID_USER.email
|
||||
) {
|
||||
setLoginError(null)
|
||||
setSuccess(true)
|
||||
} else {
|
||||
setLoginError('Hibás név vagy email cím. Próbáld újra.')
|
||||
setSuccess(false)
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
fields: { name, email },
|
||||
errors,
|
||||
loginError,
|
||||
success,
|
||||
handlers: { setName, setEmail },
|
||||
handleSubmit,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user