ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
43 lines • 1.47 kB
JavaScript
import { useGetManyAggregate } from "../dataProvider/index.js";
/**
* @typedef UseReferenceResult
* @type {Object}
* @property {boolean} isFetching: boolean indicating if the reference is loading
* @property {boolean} isLoading: boolean indicating if the reference has loaded at least once
* @property {Object} referenceRecord: the referenced record.
*/
/**
* Fetch reference record, and return it when available
*
* The reference prop should be the name of one of the <Resource> components
* added as <Admin> child.
*
* @example
*
* const { isLoading, referenceRecord } = useReference({
* id: 7,
* reference: 'users',
* });
*
* @param {Object} option
* @param {string} option.reference The linked resource name
* @param {string} option.id The id of the reference
* @param {Object} option.options Options passed to the dataProvider
*
* @returns {UseReferenceResult} The reference record
*/
export const useReference = ({ reference, id, options = {}, }) => {
const { meta, ...otherQueryOptions } = options;
const { data, error, isLoading, isFetching, isPaused, isPending, isPlaceholderData, refetch, } = useGetManyAggregate(reference, { ids: [id], meta }, otherQueryOptions);
return {
referenceRecord: data ? data[0] : undefined,
refetch,
error,
isLoading,
isFetching,
isPaused,
isPending,
isPlaceholderData,
};
};
//# sourceMappingURL=useReference.js.map