Skip to main content

uui-services-context

Helps work with UUI services layer including ContextProvider, ApiContext, ModalContext, NotificationContext, and useUuiContext. Use when implementing features that need modals, notifications, API calls, error handling, or routing.

インストールへ移動

ソース情報

リポジトリ
epam/UUI
ソースの最終更新活動
2026年3月4日 09:47
検出された SKILL.md の言語
英語
スター
248
フォーク
79

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
uui-services-context
description
Helps work with UUI services layer including ContextProvider, ApiContext, ModalContext, NotificationContext, and useUuiContext. Use when implementing features that need modals, notifications, API calls, error handling, or routing.
# UUI Services & Context UUI provides a services layer that components consume via `useUuiContext()`. Services are initialized by `ContextProvider` and include API, modals, notifications, routing, analytics, and more. ## Location - **Package:** `@epam/uui-core` - **Path:** `uui-core/src/services/` - **Types:** `uui-core/src/types/contexts.ts` ## ContextProvider Wrap the app with `ContextProvider` to initialize UUI services: ```typescript import { ContextProvider } from '@epam/uui-core'; <ContextProvider apiDefinition={ (processRequest) => ({ myApi: (data) => processRequest('/api/endpoint', 'POST', data), })} loadAppContext={ async (api) => ({ user: await api.getUser() }) } onInitCompleted={ (svc) => { /* optional: store ref, etc. */ } } history={ history } // optional: for SPA routing > <App /> </ContextProvider> ``` - **apiDefinition** — Returns API object. Each method receives `(url, method, data, options)` via `processRequest`. - **loadAppContext** — Loads global data before mount. Result stored in `uuiApp`. - **onInitCompleted** — Called when contexts are ready. - **history** — React Router history for `uuiRouter.redirect()`. ## useUuiContext Access services inside any component under `ContextProvider`: ```typescript import { useUuiContext } from '@epam/uui-core'; function MyComponent() { const svc = useUuiContext(); const { api, uuiModals, uuiNotifications, uuiRouter } = svc; // ... } ``` **Throws** if used outside `ContextProvider`. ## Key Services | Service | Property | Purpose | |---------|----------|---------| | API | `api` | HTTP requests. Methods from `apiDefinition`. `api.withOptions({})` for call options. | | Modals | `uuiModals` | Show modal dialogs. `uuiModals.show(render, params)` returns `Promise<TResult>`. | | Notifications | `uuiNotifications` | Toast notifications. `uuiNotifications.show(render, params)`. | | Router | `uuiRouter` | `redirect(link)`, `getCurrentLink()`, `transfer(link)`. | | Layout | `uuiLayout` | Layers, portal root. `getLayer()`, `releaseLayer()`, `getPortalRoot()`. | | Locks | `uuiLocks` | Concurrent action locking. `acquire()`, `release()`, `withLock()`. | | Errors | `uuiErrors` | Error handling, recovery. | | Analytics | `uuiAnalytics` | Analytics events. | | User Settings | `uuiUserSettings` | Persistent user settings (e.g. form drafts). | | App Context | `uuiApp` | Data from `loadAppContext`. | ## Modals ```typescript const result = await uuiModals.show<ResultType>((props) => ( <MyModal { ...props } onSave={ () => props.success(data) } onCancel={ () => props.abort() } /> ), { initialValue }); ``` - `props.success(data)` — Resolves the promise, closes modal. - `props.abort()` — Rejects the promise, closes modal. - `ModalOperationCancelled` — Thrown when user dismisses modal (e.g. backdrop click). ## Notifications ```typescript await uuiNotifications.show((props) => ( <SuccessNotification { ...props }> Saved successfully </SuccessNotification> ), { duration: 5, position: 'bot-right' }); ``` - **duration** — Seconds or `'forever'` for persistent notification. - **position** — `'bot-left'` | `'bot-right'` | `'top-left'` | `'top-right'` | `'top-center'` | `'bot-center'`. ## API (ApiContext) - `processRequest(url, method, data, options)` — Low-level HTTP. - API methods from `apiDefinition` use `processRequest` internally. - AbortSignal passed via `FetchingOptions` for cancellation. - Auth recovery, relogin path configured via `ApiContext` props. ## useUuiServices Used by `ContextProvider` internally. For tests or custom setup: ```typescript const { services } = useUuiServices({ apiDefinition, router }); // Provide via UuiContext.Provider value={services} ``` ## Routing Adapters - **HistoryAdaptedRouter** — Wraps react-router `history`. - **StubAdaptedRouter** — No-op for apps without routing. - **Next.js** — Use `useUuiServicesSsr` from `@epam/uui-core/ssr`. ## References - ContextProvider: `uui-core/src/services/ContextProvider.tsx` - useUuiServices: `uui-core/src/hooks/useUuiServices.ts` - Types: `uui-core/src/types/contexts.ts` - ApiContext: `uui-core/src/services/ApiContext.ts` - ModalContext: `uui-core/src/services/ModalContext.ts` - NotificationContext: `uui-core/src/services/NotificationContext.ts`
GitHubで見る