import {useEffect, useState} from "react"; import '../assets/styles/home.css'; import { Divider, TextField, ThemeProvider, useTheme } from "@mui/material"; import {getAll} from '~/api'; import customTheme from "~/assets/mui/themes/home"; import {BlacklistItem} from "~/classes/blacklistItem"; import {ResponseError} from "~/classes/responseError"; import ItemList from "~/components/itemList"; export default function Home() { const outerTheme = useTheme(); const [searchText, setSearchText] = useState(''); const [isFetchingList, setIsFetchingList] = useState(false); const [blacklistItems, setBlacklistItems] = useState([]); useEffect(() => { let isIgnore = false; setIsFetchingList(true); getAll(searchText).then((res: BlacklistItem[] | ResponseError | undefined)=> { if (!isIgnore) { if (res instanceof Array){ setBlacklistItems(res); } else if (res instanceof ResponseError) { // TODO error handler console.log(res); } setIsFetchingList(false); } }); return () => { isIgnore = true; // При следующем изменении someValue старый запрос будет проигнорирован }; }, [searchText]); function handleSearch(text: string) { setSearchText(text); } return (
handleSearch(e.target.value)} fullWidth />
{/*
*/} {/*
*/} {/* {blacklistItems.map((item, i) => {*/} {/* return */} {/* })}*/} {/*
*/} {/*
*/}
); }