# useCategory
# Features
useCategory composable is responsible for fetching a list of categories. A common usage scenario for this composable is navigation.
# API
search- the main querying function used to query categories from the eCommerce platform and populate thecategoriesobject with the result. Every time you invoke this function API request is made. This method accepts a singleparamsobject. Theparamshas the following options:searchParamsid: stringslug: string
customQuery?: CustomQuerytype CustomQuery = { categories: string }
categories: Category[]- the main data object that contains an array of categories fetched bysearchmethod.type Category = { __typename?: "Category"; id: Scalars["String"]; key?: Maybe<Scalars["String"]>; version: Scalars["Long"]; name?: Maybe<Scalars["String"]>; nameAllLocales: Array<LocalizedString>; description?: Maybe<Scalars["String"]>; descriptionAllLocales?: Maybe<Array<LocalizedString>>; slug?: Maybe<Scalars["String"]>; slugAllLocales: Array<LocalizedString>; ancestorsRef: Array<Reference>; ancestors: Array<Category>; parentRef?: Maybe<Reference>; parent?: Maybe<Category>; orderHint: Scalars["String"]; externalId?: Maybe<Scalars["String"]>; metaTitle?: Maybe<Scalars["String"]>; metaKeywords?: Maybe<Scalars["String"]>; metaDescription?: Maybe<Scalars["String"]>; productCount: Scalars["Int"]; stagedProductCount: Scalars["Int"]; childCount: Scalars["Int"]; children?: Maybe<Array<Category>>; createdAt: Scalars["DateTime"]; lastModifiedAt: Scalars["DateTime"]; assets: Array<Asset>; customFieldsRaw?: Maybe<Array<RawCustomField>>; customFields?: Maybe<Type>; custom?: Maybe<CustomFieldsType>; createdBy?: Maybe<Initiator>; lastModifiedBy?: Maybe<Initiator>; customFieldList?: Maybe<Array<CustomField>>; }loading: boolean- a reactive object containing information about the loading state of yoursearchmethod.error: UseCategoryErrors- reactive object containing the error message, ifsearchfailed for any reason.interface UseCategoryErrors { search: Error; }
# Getters
getTree- returns category tree.interface CategoryGetters { getTree: (category: Category) => AgnosticCategoryTree | null; } interface AgnosticCategoryTree { label: string; slug?: string; items: AgnosticCategoryTree[]; isCurrent: boolean; count?: number; [x: string]: unknown; }
# Example
import { useCategory } from '@vsf-enterprise/commercetools';
import { onSSR } from '@vue-storefront/core'
export default {
setup () {
const { categories, search, loading } = useCategory('menu-categories');
onSSR(async () => {
await search({});
});
return {
categories,
loading
}
}
}