@@ -19,6 +19,7 @@ import {
19
19
CollectionOnceHook ,
20
20
DataOptions ,
21
21
GetOptions ,
22
+ InitialValueOptions ,
22
23
OnceDataOptions ,
23
24
OnceOptions ,
24
25
Options ,
@@ -113,25 +114,39 @@ export const useCollectionOnce = <T = DocumentData>(
113
114
114
115
export const useCollectionData = < T = DocumentData > (
115
116
query ?: Query < T > | null ,
116
- options ?: DataOptions < T >
117
+ options ?: DataOptions < T > & InitialValueOptions < T [ ] >
117
118
) : CollectionDataHook < T > => {
118
119
const snapshotOptions = options ?. snapshotOptions ;
119
120
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
+
121
129
const resArray : CollectionDataHook < T > = [ values , loading , error , snapshots ] ;
122
130
return useMemo ( ( ) => resArray , resArray ) ;
123
131
} ;
124
132
125
133
export const useCollectionDataOnce = < T = DocumentData > (
126
134
query ?: Query < T > | null ,
127
- options ?: OnceDataOptions < T >
135
+ options ?: OnceDataOptions < T > & InitialValueOptions < T [ ] >
128
136
) : CollectionDataOnceHook < T > => {
129
137
const snapshotOptions = options ?. snapshotOptions ;
130
138
const [ snapshots , loading , error , loadData ] = useCollectionOnce < T > (
131
139
query ,
132
140
options
133
141
) ;
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
+
135
150
const resArray : CollectionDataOnceHook < T > = [
136
151
values ,
137
152
loading ,
@@ -143,13 +158,17 @@ export const useCollectionDataOnce = <T = DocumentData>(
143
158
} ;
144
159
145
160
const 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
+ ) ;
153
172
} ;
154
173
155
174
const getDocsFnFromGetOptions = (
0 commit comments