@knowmax/genericlist-core
Version:
Knowmax Generic list with basic CRUD support without any user interface implementation.
26 lines (25 loc) • 1.09 kB
JavaScript
import { useEffect } from "react";
import { deserializeListState } from "../utils";
import { useGenericListCache } from "./GenericListCacheProvider";
import { GenericList, useGenericListSettings } from '.';
/** Generic hook for specified type and configuration. Attempts to cache lists using endpoint as key. Automatically loads data, updates token and selected application. */
export const useList = (configuration, autoLoad = true) => {
const listsettings = useGenericListSettings();
const listcache = useGenericListCache();
const list = listcache.getOrCreate(configuration.endpoint, () => new GenericList(configuration));
useEffect(() => {
list.setSettings(listsettings);
}, [list, listsettings]);
useEffect(() => {
const params = new URLSearchParams(listsettings.params);
if (deserializeListState(list, params)) {
listsettings.serialize(params);
}
}, [list, listsettings.params]);
useEffect(() => {
if (autoLoad) {
list.load();
}
}, [list.hash, list, autoLoad]);
return list;
};