import React, { useRef, useEffect, useState, useContext } from 'react'; import { Link } from 'react-router-dom'; import IconButton from '@mui/material/IconButton'; import SearchIcon from '@mui/icons-material/Search'; import InfiniteScroll from "react-infinite-scroll-component"; import { HeaderContext } from '../../context'; import Alert from '../../component/alert'; import PageLoader from '../../component/page_loader'; const INFINITE = 10; const SCROLL_DELAY_TIME = 1500; const AdminChilds = () => { const { isAuthenticate } = useContext(HeaderContext); const [keyword, setKeyword] = useState('') const [loaded, setLoaded] = useState(false); const [children_list, setChildrenList ] = useState([]); const [fetch_children_list, setFetchChildrenList] = useState([]); const [_422errors, set422errors] = useState({keyword:''}); const [_400error, set400Error] = useState(''); const [_success, setSuccess] = useState(''); const isMountedRef = useRef(true); useEffect(() => { isMountedRef.current = false; if(isAuthenticate()){ setLoaded(false); axios.get('/api/admin/children/list') .then((response) => { if(isMountedRef.current) return; setLoaded(true); if(response.data.status_code==200){ setChildrenList(response.data.params); var len = response.data.params.length; if(len > INFINITE) setFetchChildrenList(response.data.params.slice(0, INFINITE)); else setFetchChildrenList(response.data.params.slice(0, len)); } else { set400Error("失敗しました。"); } }); } return () => { isMountedRef.current = true; } }, []); const fetchMoreChildrenList = () => { setTimeout(() => { var x = fetch_children_list.length; var y = children_list.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchChildrenList(children_list.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; const handleSearch = (e) => { e.preventDefault(); if(isAuthenticate()){ if(keyword == '') { document.getElementById('keyword').focus(); return; } setLoaded(false); set422errors({keyword:''}); setChildrenList([]); axios.get('/api/admin/children/search', {params:{keyword: keyword}}) .then((response) => { if(isMountedRef.current) return; setLoaded(true); if(response.data.status_code==200){ setChildrenList(response.data.params); var len = response.data.params.length; if(len > INFINITE) setFetchChildrenList(response.data.params.slice(0, INFINITE)); else setFetchChildrenList(response.data.params.slice(0, len)); } }); } } return (

子一覧

setKeyword(e.target.value)} />
{ !loaded && } { loaded &&
} style={{overflow:'none', position:'relative'}} > { fetch_children_list.length>0 ? fetch_children_list.map((child, k) =>
name

{`${child.last_name} ${child.first_name}`}

{ child.tel }

) :

データが存在していません。

} }
{ _400error && set400Error('')}>{_400error} } { _success && setSuccess('')}>{_success} }
) } export default AdminChilds;