(
queriesOptions: Accessor<{
queries:
| readonly [...QueriesOptions<T>]
| readonly [...{ [K in keyof T]: GetOptions<T[K]> }]
combine?: (result: QueriesResults<T>) => TCombinedResult
}>,
queryClient?: Accessor<QueryClient>,
)
| 185 | : { [K in keyof T]: GetResults<T[K]> } |
| 186 | |
| 187 | export function useQueries< |
| 188 | T extends Array<any>, |
| 189 | TCombinedResult extends QueriesResults<T> = QueriesResults<T>, |
| 190 | >( |
| 191 | queriesOptions: Accessor<{ |
| 192 | queries: |
| 193 | | readonly [...QueriesOptions<T>] |
| 194 | | readonly [...{ [K in keyof T]: GetOptions<T[K]> }] |
| 195 | combine?: (result: QueriesResults<T>) => TCombinedResult |
| 196 | }>, |
| 197 | queryClient?: Accessor<QueryClient>, |
| 198 | ): TCombinedResult { |
| 199 | const client = createMemo(() => useQueryClient(queryClient?.())) |
| 200 | const isRestoring = useIsRestoring() |
| 201 | |
| 202 | const defaultedQueries = createMemo(() => |
| 203 | queriesOptions().queries.map((options) => |
| 204 | mergeProps( |
| 205 | client().defaultQueryOptions(options as QueryObserverOptions), |
| 206 | { |
| 207 | get _optimisticResults() { |
| 208 | return isRestoring() ? 'isRestoring' : 'optimistic' |
| 209 | }, |
| 210 | }, |
| 211 | ), |
| 212 | ), |
| 213 | ) |
| 214 | |
| 215 | const observer = new QueriesObserver( |
| 216 | client(), |
| 217 | defaultedQueries(), |
| 218 | queriesOptions().combine |
| 219 | ? ({ |
| 220 | combine: queriesOptions().combine, |
| 221 | } as QueriesObserverOptions<TCombinedResult>) |
| 222 | : undefined, |
| 223 | ) |
| 224 | |
| 225 | const [state, setState] = createStore<TCombinedResult>( |
| 226 | observer.getOptimisticResult( |
| 227 | defaultedQueries(), |
| 228 | (queriesOptions() as QueriesObserverOptions<TCombinedResult>).combine, |
| 229 | )[1](), |
| 230 | ) |
| 231 | |
| 232 | createRenderEffect( |
| 233 | on( |
| 234 | () => queriesOptions().queries.length, |
| 235 | () => |
| 236 | setState( |
| 237 | observer.getOptimisticResult( |
| 238 | defaultedQueries(), |
| 239 | (queriesOptions() as QueriesObserverOptions<TCombinedResult>) |
| 240 | .combine, |
| 241 | )[1](), |
| 242 | ), |
| 243 | ), |
| 244 | ) |
searching dependent graphs…