Skip to content

useRepository

Retrieves a repository instance from the DI container.

Signature

ts
function useRepository<T>(symbol: symbol): T

Parameters

ParameterTypeDescription
symbolsymbolDI symbol for the repository

Return Type

TypeDescription
TThe 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

See also