import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/functional/Composables/useApiManagementAsyncRef - Khởi tạo quản lý API bất đồng bộ'/>

# `useApiManagementAsyncRef`

`useApiManagementAsyncRef` là một wrapper bất đồng bộ cho [`useApiManagementRef`](./useApiManagementRef.vi.mdx), thực hiện khởi tạo yêu cầu ngay lập tức.

Khác với `useApiManagementRef` tiêu chuẩn, vốn khởi tạo "lười" (khi truy cập danh sách hoặc dữ liệu lần đầu), phương thức này gọi `initSsr()` ngay lập tức khi được tạo. Điều này làm cho nó trở thành lựa chọn lý tưởng để sử dụng trong môi trường SSR.

## Các tính năng chính
- **Khởi tạo ngay lập tức** — bắt đầu quá trình khởi tạo GET request ngay khi hook được gọi.
- **Hỗ trợ SSR** — đảm bảo dữ liệu được tải trên máy chủ trước khi trang được gửi đến máy khách.
- **Đầy đủ chức năng quản lý** — giữ lại tất cả các tính năng của `useApiManagementRef`, bao gồm formatter, tìm kiếm và mutation.

## Tham số
Các tham số giống hệt với [`useApiManagementRef`](./useApiManagementRef.vi.mdx):

- `propsGet: ApiManagementGet<Return, Type>` — cài đặt GET request chính.
- `formattersOptions?: FormattersOptions` — quy tắc định dạng.
- `searchOptions?: ApiManagementSearch<Item, Columns>` — cài đặt tìm kiếm.
- `postRequest / putRequest / deleteRequest` — cài đặt mutation.
- `action?: (data: any) => Promise<void> | void` — callback chung để thực thi sau bất kỳ mutation nào thành công.
- `apiInstance?: ApiInstance` — instance của API.

## Giá trị trả về
Trả về một đối tượng quản lý API. Cấu trúc đối tượng trả về giống hệt với [`useApiManagementRef`](./useApiManagementRef.vi.mdx):

- `isValid: ComputedRef<boolean>` — `true` nếu dữ liệu khớp với kiểm tra `typeData`.
- `isResponseContractValid: ComputedRef<boolean>` — `true` nếu dữ liệu phản hồi khớp với hợp đồng đã xác định.
- `responseValidationResult: ComputedRef<ApiDataValidation | undefined>` — kết quả chi tiết của việc xác thực hợp đồng.
- `list: ComputedRef` — mảng dữ liệu đã qua xử lý với sự hỗ trợ của Skeleton, formatter và tìm kiếm.
- `data: ComputedRef<ApiData<Return> | undefined>` — dữ liệu reactive thô từ `useApiRef`.
- `errorItem: ComputedRef<ApiErrorItem | undefined>` — đối tượng lỗi hiện tại nếu yêu cầu thất bại.
- `length: ComputedRef<number>` — độ dài hiện tại của `list`.
- `starting / loading / reading` — các cờ trạng thái yêu cầu.
- `loadingSearch / loadingPost / loadingPut / loadingDelete` — trạng thái loading cho tìm kiếm và mutation.
- `isSearch / search` — trạng thái tìm kiếm và chuỗi tìm kiếm reactive.
- `sendPost / sendPut / sendDelete` — các phương thức để thực thi mutation.
- `reset / abort` — các phương thức điều khiển.

## Ví dụ

```typescript
import { useApiManagementAsyncRef } from '@dxtmisha/functional'

// Khởi tạo (và chuẩn bị dữ liệu SSR) bắt đầu ngay lập tức
const { list, loading } = useApiManagementAsyncRef(
  { 
    path: 'api/products',
    skeleton: () => Array(3).fill({ id: 0, title: 'Đang tải...' })
  }
)
```
