import {useNavigate, useParams} from "react-router-dom"; import {useEffect, useState} from "react"; import axiosClient from "../axios-client.js"; import {useStateContext} from "../context/ContextProvider.jsx"; export default function UserForm() { const navigate = useNavigate(); let {id} = useParams(); const [user, setUser] = useState({ id: null, name: '', email: '', password: '', password_confirmation: '' }) const [errors, setErrors] = useState(null) const [loading, setLoading] = useState(false) const {setNotification} = useStateContext() if (id) { useEffect(() => { setLoading(true) axiosClient.get(`/users/${id}`) .then(({data}) => { setLoading(false) setUser(data) }) .catch(() => { setLoading(false) }) }, []) } const onSubmit = ev => { ev.preventDefault() if (user.id) { axiosClient.put(`/users/${user.id}`, user) .then(() => { setNotification('User was successfully updated') navigate('/users') }) .catch(err => { const response = err.response; if (response && response.status === 422) { setErrors(response.data.errors) } }) } else { axiosClient.post('/users', user) .then(() => { setNotification('User was successfully created') navigate('/users') }) .catch(err => { const response = err.response; if (response && response.status === 422) { setErrors(response.data.errors) } }) } } return ( <> {user.id &&

Update User: {user.name}

} {!user.id &&

New User

}
{loading && (
Loading...
)} {errors &&
{Object.keys(errors).map(key => (

{errors[key][0]}

))}
} {!loading && (
setUser({...user, name: ev.target.value})} placeholder="Name"/> setUser({...user, email: ev.target.value})} placeholder="Email"/> setUser({...user, password: ev.target.value})} placeholder="Password"/> setUser({...user, password_confirmation: ev.target.value})} placeholder="Password Confirmation"/>
)}
) }