UNPKG

@knowmax/genericlist-core

Version:

Knowmax Generic list with basic CRUD support without any user interface implementation.

26 lines (25 loc) 1.09 kB
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; };