Appearance
useRepository
Retrieves a repository instance from the DI container.
Signature
ts
function useRepository<T>(symbol: symbol): TParameters
| Parameter | Type | Description |
|---|---|---|
symbol | symbol | DI symbol for the repository |
Return Type
| Type | Description |
|---|---|
T | The repository instance |
Example
tsx
import { useRepository } from '@/shared/hooks/useRepository'
import { USER_SYMBOLS } from '@/modules/users/di/symbols'
import type { IUserRepository } from '@/modules/users/domain/repositories'
const userRepo = useRepository<IUserRepository>(USER_SYMBOLS.IUserRepository)
const users = await userRepo.getAll()Module-Specific Wrapper Pattern
tsx
// In module's hooks file
export const useUsersRepository = () =>
useRepository<IUserRepository>(USER_SYMBOLS.IUserRepository)
// Usage
const repo = useUsersRepository()Notes
- Uses React context to access the DI container
- Memoizes the repository instance to prevent re-renders
- Avoids circular dependency issues during HMR