MCPcopy Create free account
hub / github.com/CSFrequency/react-firebase-hooks / useCollectionOnce

Function useCollectionOnce

firestore/useCollection.ts:61–104  ·  view source on GitHub ↗
(
  query?: Query<T> | null,
  options?: OnceOptions
)

Source from the content-addressed store, hash-verified

59};
60
61export const useCollectionOnce = <T = DocumentData>(
62 query?: Query<T> | null,
63 options?: OnceOptions
64): CollectionOnceHook<T> => {
65 const { error, loading, reset, setError, setValue, value } = useLoadingValue<
66 QuerySnapshot<T>,
67 FirestoreError
68 >();
69 const isMounted = useIsMounted();
70 const ref = useIsFirestoreQueryEqual<Query<T>>(query, reset);
71
72 const loadData = useCallback(
73 async (query?: Query<T> | null, options?: Options & OnceOptions) => {
74 if (!query) {
75 setValue(undefined);
76 return;
77 }
78 const get = getDocsFnFromGetOptions(options?.getOptions);
79
80 try {
81 const result = await get(query);
82 if (isMounted) {
83 setValue(result);
84 }
85 } catch (error) {
86 if (isMounted) {
87 setError(error as FirestoreError);
88 }
89 }
90 },
91 []
92 );
93
94 const reloadData = useCallback(() => loadData(ref.current, options), [
95 loadData,
96 ref.current,
97 ]);
98
99 useEffect(() => {
100 loadData(ref.current, options);
101 }, [ref.current]);
102
103 return [value as QuerySnapshot<T>, loading, error, reloadData];
104};
105
106export const useCollectionData = <T = DocumentData>(
107 query?: Query<T> | null,

Callers 1

useCollectionDataOnceFunction · 0.85

Calls 3

useIsFirestoreQueryEqualFunction · 0.90
setValueFunction · 0.85
getDocsFnFromGetOptionsFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…