@@ -19,6 +19,7 @@ import {
1919 CollectionOnceHook ,
2020 DataOptions ,
2121 GetOptions ,
22+ InitialValueOptions ,
2223 OnceDataOptions ,
2324 OnceOptions ,
2425 Options ,
@@ -113,25 +114,39 @@ export const useCollectionOnce = <T = DocumentData>(
113114
114115export const useCollectionData = < T = DocumentData > (
115116 query ?: Query < T > | null ,
116- options ?: DataOptions < T >
117+ options ?: DataOptions < T > & InitialValueOptions < T [ ] >
117118) : CollectionDataHook < T > => {
118119 const snapshotOptions = options ?. snapshotOptions ;
119120 const [ snapshots , loading , error ] = useCollection < T > ( query , options ) ;
120- const values = getValuesFromSnapshots < T > ( snapshots , snapshotOptions ) ;
121+
122+ const initialValue = options ?. initialValue ;
123+ const values = getValuesFromSnapshots < T > (
124+ snapshots ,
125+ snapshotOptions ,
126+ initialValue
127+ ) ;
128+
121129 const resArray : CollectionDataHook < T > = [ values , loading , error , snapshots ] ;
122130 return useMemo ( ( ) => resArray , resArray ) ;
123131} ;
124132
125133export const useCollectionDataOnce = < T = DocumentData > (
126134 query ?: Query < T > | null ,
127- options ?: OnceDataOptions < T >
135+ options ?: OnceDataOptions < T > & InitialValueOptions < T [ ] >
128136) : CollectionDataOnceHook < T > => {
129137 const snapshotOptions = options ?. snapshotOptions ;
130138 const [ snapshots , loading , error , loadData ] = useCollectionOnce < T > (
131139 query ,
132140 options
133141 ) ;
134- const values = getValuesFromSnapshots < T > ( snapshots , snapshotOptions ) ;
142+
143+ const initialValue = options ?. initialValue ;
144+ const values = getValuesFromSnapshots < T > (
145+ snapshots ,
146+ snapshotOptions ,
147+ initialValue
148+ ) ;
149+
135150 const resArray : CollectionDataOnceHook < T > = [
136151 values ,
137152 loading ,
@@ -143,13 +158,17 @@ export const useCollectionDataOnce = <T = DocumentData>(
143158} ;
144159
145160const getValuesFromSnapshots = < T > (
146- snapshots ?: QuerySnapshot < T > ,
147- options ?: SnapshotOptions
148- ) => {
149- return useMemo ( ( ) => snapshots ?. docs . map ( ( doc ) => doc . data ( options ) ) as T [ ] , [
150- snapshots ,
151- options ,
152- ] ) ;
161+ snapshots : QuerySnapshot < T > | undefined ,
162+ options ?: SnapshotOptions ,
163+ initialValue ?: T [ ]
164+ ) : T [ ] | undefined => {
165+ return useMemo (
166+ ( ) =>
167+ ( snapshots ?. docs . map ( ( doc ) => doc . data ( options ) ) ?? initialValue ) as
168+ | T [ ]
169+ | undefined ,
170+ [ snapshots , options ]
171+ ) ;
153172} ;
154173
155174const getDocsFnFromGetOptions = (
0 commit comments