import React, { useRef, useEffect, useState, useContext } from 'react'; import { useNavigate } from 'react-router-dom'; import { LoadingButton } from '@material-ui/lab'; import { HeaderContext } from '../../context'; import Notification from '../../component/notification'; import Alert from '../../component/alert'; import PageLoader from '../../component/page_loader'; const ChildProfileEdit = () => { const { isAuthenticate } = useContext(HeaderContext); const navigator = useNavigate(); const child_id = localStorage.getItem('child_id'); const [notice, setNotice] = useState(-1); const [first_name, setFirstName] = useState(''); const [last_name, setLastName] = useState(''); const [identity, setIdentity] = useState(''); const [email, setEmail] = useState(''); const [tel, setTel] = useState(''); const [company, setCompany] = useState(''); const [profile, setProfile] = useState(null); const [_422errors, set422Errors] = useState({ first_name:'', last_name:'', identity:'', email:'', tel:'', company:'' }) const [_success, setSuccess] = useState(''); const [_400error, set400Error] = useState(''); const [_404error, set404Error] = useState(''); const [submit, setSubmit] = useState(false); const [loaded, setLoaded] = useState(false); const isMountedRef = useRef(true); useEffect(() => { isMountedRef.current = false; if(isAuthenticate()){ setLoaded(false); axios.get('/api/children/detail/'+child_id) .then(response => { if(isMountedRef.current) return; setLoaded(true); setNotice(response.data.notice); if(response.data.status_code==200){ let params = response.data.params; setProfile(params); setFirstName(params.first_name); setLastName(params.last_name); setEmail(params.email); setTel(params.tel); setIdentity(params.identity); setCompany(params.company? params.company: ''); }else { set400Error("失敗しました。"); } }) .catch(err=>{ if(isMountedRef.current) return; setLoaded(true); setNotice(err.response.data.notice); if(err.response.status==404){ set404Error(err.response.data.message); } }) } return () => { isMountedRef.current = true } },[]); const handleSubmit = (e) => { e.preventDefault(); if(isAuthenticate()){ set422Errors({ first_name:'', last_name:'', identity:'', email:'', tel:'', company:'' }); const formdata = new FormData(); formdata.append('first_name', first_name); formdata.append('last_name', last_name); formdata.append('identity', identity); formdata.append('email', email); formdata.append('tel', tel); formdata.append('company', company); const post = { first_name: first_name, last_name: last_name, identity: identity, email: email, tel: tel, company: company } setSubmit(true); axios.put('/api/children/updateProfile/'+ child_id, post) .then(response => { if(isMountedRef.current) return; setSubmit(false); setNotice(response.data.notice); switch(response.data.status_code){ case 200: { navigator('/c-account/profile', { state: response.data.success_messages}); break; } case 400: set400Error(response.data.error_messages); break; case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break; } }) } } return (

プロフィール編集

{ !loaded && } { loaded && profile &&
setLastName(e.target.value)}/> { _422errors.last_name && { _422errors.last_name } }
setFirstName(e.target.value)}/> { _422errors.first_name && { _422errors.first_name } }
setIdentity(e.target.value)}/> { _422errors.identity && { _422errors.identity } }
setEmail(e.target.value)}/> { _422errors.email && {_422errors.email} }
setTel(e.target.value)}/> { _422errors.tel && { _422errors.tel } }
setCompany(e.target.value)}/> { _422errors.company && { _422errors.company } }
プロフィールを更新
} { _400error && set400Error('')}>{_400error} } { _success && setSuccess('')}>{_success} } { _404error && { navigator('/c-account/profile'); }}> {_404error} }
) } export default ChildProfileEdit;