QueriesObserver allows you to observe multiple queries at once. It powers hooks like useQueries, enabling you to run multiple queries in parallel and get their combined results.
Constructor
Creates a new QueriesObserver instance.QueryClient
required
The QueryClient instance to use.
Array<QueryObserverOptions>
required
Array of query options for each query to observe.
QueriesObserverOptions
Options for combining results.
Example
Methods
subscribe
Subscribes to all queries and receives updates when any query state changes.(results: Array<QueryObserverResult>) => void
required
Function called when any query result changes. Receives an array of all query results.
function
Returns an unsubscribe function.
Example
setQueries
Updates the queries being observed.Array<QueryObserverOptions>
required
New array of query options.
QueriesObserverOptions
Updated options for combining results.
Example
getCurrentResult
Returns the current results for all queries.Array
Returns an array of query results, one for each query.
Example
getQueries
Returns the Query instances being observed.Array
Returns an array of Query instances.
getObservers
Returns the QueryObserver instances managing each query.Array
Returns an array of QueryObserver instances.
getOptimisticResult
Computes an optimistic result for the given queries without subscribing.Array<QueryObserverOptions>
required
Array of query options.
(results: Array<QueryObserverResult>) => TCombinedResult
Function to combine the results.
[Array<QueryObserverResult>, Function, Function]
Returns a tuple with:
- Raw results array
- Function to combine results
- Function to track results
destroy
Destroys the observer and all child observers.Example
Combining Results
You can use thecombine option to transform the array of results into a single value:
Usage Example
Here’s a complete example:Dynamic Queries
QueriesObserver efficiently handles dynamic query lists:- Reuse existing QueryObserver instances for queries that haven’t changed
- Create new QueryObserver instances for new queries
- Destroy QueryObserver instances for removed queries
- Only notify listeners if the results actually changed
Performance
QueriesObserver is optimized for performance:- Efficient Updates: Only creates/destroys observers when queries change
- Selective Notifications: Only notifies listeners when results change
- Result Memoization: Memoizes combined results to avoid unnecessary recalculations
- Property Tracking: Tracks which properties are accessed to minimize re-renders