UNPKG

use-async-resource

Version:

A custom React hook for simple data fetching with React Suspense

29 lines 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAsyncResource = void 0; const react_1 = require("react"); const dataReaderInitializer_1 = require("./dataReaderInitializer"); function useAsyncResource(apiFunction, ...parameters) { const dataReaderObj = (0, react_1.useRef)(() => undefined); (0, react_1.useMemo)(() => { if (parameters.length) { if (!apiFunction.length && parameters.length === 1 && Array.isArray(parameters[0]) && parameters[0].length === 0) { dataReaderObj.current = (0, dataReaderInitializer_1.initializeDataReader)(apiFunction); } else { dataReaderObj.current = (0, dataReaderInitializer_1.initializeDataReader)(apiFunction, ...parameters); } } }, [apiFunction, ...parameters]); const [, forceRender] = (0, react_1.useState)(0); const updaterFn = (0, react_1.useCallback)((...newParameters) => { dataReaderObj.current = (0, dataReaderInitializer_1.initializeDataReader)(apiFunction, ...newParameters); forceRender(ct => 1 - ct); }, [apiFunction]); return [dataReaderObj.current, updaterFn]; } exports.useAsyncResource = useAsyncResource; //# sourceMappingURL=useAsyncResource.js.map