Witam,
mam wlasny hook, ktory zczytuje dane z api i laduje do stanu, ale mam jeszcze jeden hook, w ktorym chce miec kolumny zczytane na podstawie tego samego response. Niestety stan daje pusta tablice >> column <<. SetColumn nie jest widoczna natychmiast i hook useTable przekazuje pusta tablica columns. Co zrobic zeby hook przekazal wypelniona wartosciami tablice columns ?
const urls: string[] = [
"https://jsonplaceholder.typicode.com/posts",
"https://jsonplaceholder.typicode.com/comments",
"https://jsonplaceholder.typicode.com/albums",
"https://jsonplaceholder.typicode.com/photos",
"https://jsonplaceholder.typicode.com/todos",
];
const useTable = (idurl: number, actualcategory: string) => {
const [data, setData] = useState<Data>();
const current = useRef<Function>();
const [columns, setColumns] = useState<Column[]>();
let objcolumn: Column[] = [];
const loadDatabase = async () => {
const response = await fetch(urls[idurl]);
const d = await response.json();
objcolumn = [
...Object.keys(d[0]).map((t: string) => {
let d: Column = { col: { title: t, disp: true } };
return d;
}),
];
setColumns(objcolumn);
};
current.current = loadDatabase;
useEffect(() => {
current.current && current.current();
}, [actualcategory]);
return [data && data[actualcategory], columns] as const;
};
export { useTable };