API 
This article provides an overview of the main API for the @wroud/di-react package. It explains the key components and hooks available for managing dependency injection in React applications.
ServiceProvider 
The ServiceProvider component is used to supply a service provider context to child components, enabling them to resolve services.
Props 
provider: IServiceProvider- The service provider instance used to resolve services within the component tree.
 
Example 
import { ServiceProvider } from "@wroud/di-react";
import { Main } from "./Main.js";
import { getServiceProvider } from "./getServiceProvider.js";
export function App() {
  return (
    <ServiceProvider provider={getServiceProvider()}>
      <Main />
    </ServiceProvider>
  );
}useService 
The useService hook is used to resolve a single service instance. If the service is lazy-loaded, React's Suspense mechanism will handle its resolution.
Arguments 
type: ServiceType<T>- The service type to resolve.
 
Example 
import { useService } from "@wroud/di-react";
import Logger from "./Logger.js";
function SomeComponent() {
  const logger = useService(Logger);
  function handleClick() {
    logger.log("Hello World!");
  }
  return (
    <button type="button" onClick={handleClick}>
      Click me!
    </button>
  );
}useServices 
The useServices hook is used to resolve multiple instances of a service. Like useService, it utilizes React's Suspense mechanism to handle lazy-loaded services.
Arguments 
type: ServiceType<T>- The service type to resolve.
 
Example 
import { useServices } from "@wroud/di-react";
import Logger from "./Logger.js";
function SomeComponent() {
  const loggers = useServices(Logger);
  function handleClick() {
    loggers.forEach((logger) => {
      logger.log("Hello World!");
    });
  }
  return (
    <button type="button" onClick={handleClick}>
      Click me!
    </button>
  );
}useServiceCreateAsyncScope 
The useServiceCreateAsyncScope hook creates an asynchronous service scope. It requires a ServiceProvider to be present in the parent components to function properly.
Example 
import { useServiceCreateAsyncScope, ServiceProvider } from "@wroud/di-react";
function SomeComponent() {
  const scopeServiceProvider = useServiceCreateAsyncScope();
  return <ServiceProvider provider={scopeServiceProvider}>...</ServiceProvider>;
}useServiceCreateScope 
The useServiceCreateScope hook creates a new service scope. Similar to useServiceCreateAsyncScope, it requires a ServiceProvider in the parent components.
Example 
import { useServiceCreateScope, ServiceProvider } from "@wroud/di-react";
function SomeComponent() {
  const scopeServiceProvider = useServiceCreateScope();
  return <ServiceProvider provider={scopeServiceProvider}>...</ServiceProvider>;
}This overview provides a quick reference to the key components and hooks in the @wroud/di-react package. For more detailed information, please refer to the full documentation.