Query Client Configuration
Configure default options for all queries and mutations when creating the React Query client.
Default Options
Set default options when creating declareClient:
const client = declareClient({
api,
defaults: {
keyPrefix: ['api', 'v1'],
keySuffix: ['cache'],
},
})
Key Prefix
Add a prefix to all query keys:
const client = declareClient({
api,
defaults: {
keyPrefix: ['api', 'v1'],
},
})
const getUser = client.query({
method: 'GET',
url: '/users/$userId',
responseSchema: userSchema,
processResponse: (data) => data,
})
// Key: ['api', 'v1', 'users', '123']
const key = getUser.queryKey.dataTag({ urlParams: { userId: '123' } })
Key Suffix
Add a suffix to all query keys:
const client = declareClient({
api,
defaults: {
keySuffix: ['cache'],
},
})
const getUser = client.query({
method: 'GET',
url: '/users/$userId',
responseSchema: userSchema,
processResponse: (data) => data,
})
// Key: ['users', '123', 'cache']
const key = getUser.queryKey.dataTag({ urlParams: { userId: '123' } })
Combined Prefix and Suffix
const client = declareClient({
api,
defaults: {
keyPrefix: ['api', 'v1'],
keySuffix: ['cache'],
},
})
// Key: ['api', 'v1', 'users', '123', 'cache']
Use Cases
API Versioning
const client = declareClient({
api,
defaults: {
keyPrefix: ['api', 'v2'],
},
})
Environment Isolation
const client = declareClient({
api,
defaults: {
keyPrefix: ['api', process.env.NODE_ENV],
},
})
Cache Namespacing
const client = declareClient({
api,
defaults: {
keyPrefix: ['app', 'cache'],
keySuffix: ['v1'],
},
})
Next Steps
- Query Keys - Understand query key structure
- Getting Started - Basic setup