Product Categories
To use this resource, make sure to enable its feature flag: product_categories
Queries and Mutations listed here are used to send requests to the Admin Product Category API Routes.
All hooks listed require user authentication.
Products can be categoriezed into categories. A product can be added into more than one category.
Related Guide: How to manage product categories.
Mutations
useAdminCreateProductCategory
This hook creates a product category.
Example
import React from "react"
import { useAdminCreateProductCategory } from "medusa-react"
const CreateCategory = () => {
const createCategory = useAdminCreateProductCategory()
// ...
const handleCreate = (
name: string
) => {
createCategory.mutate({
name,
}, {
onSuccess: ({ product_category }) => {
console.log(product_category.id)
}
})
}
// ...
}
export default CreateCategory
Mutation Function Parameters
The details of the product category to create.
Mutation Function Returned Data
The product category's details.
useAdminUpdateProductCategory
This hook updates a product category.
Example
import React from "react"
import { useAdminUpdateProductCategory } from "medusa-react"
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const updateCategory = useAdminUpdateProductCategory(
productCategoryId
)
// ...
const handleUpdate = (
name: string
) => {
updateCategory.mutate({
name,
}, {
onSuccess: ({ product_category }) => {
console.log(product_category.id)
}
})
}
// ...
}
export default Category
Hook Parameters
idstringRequiredMutation Function Parameters
The details to update of the product category.
Mutation Function Returned Data
The product category's details.
useAdminDeleteProductCategory
This hook deletes a product category. This does not delete associated products.
Example
import React from "react"
import { useAdminDeleteProductCategory } from "medusa-react"
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const deleteCategory = useAdminDeleteProductCategory(
productCategoryId
)
// ...
const handleDelete = () => {
deleteCategory.mutate(void 0, {
onSuccess: ({ id, object, deleted }) => {
console.log(id)
}
})
}
// ...
}
export default Category
Hook Parameters
idstringRequiredMutation Function Returned Data
The response returned for a
DELETE
request.
DELETE
request.useAdminAddProductsToCategory
This hook adds a list of products to a product category.
Example
import React from "react"
import { useAdminAddProductsToCategory } from "medusa-react"
type ProductsData = {
id: string
}
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const addProducts = useAdminAddProductsToCategory(
productCategoryId
)
// ...
const handleAddProducts = (
productIds: ProductsData[]
) => {
addProducts.mutate({
product_ids: productIds
}, {
onSuccess: ({ product_category }) => {
console.log(product_category.products)
}
})
}
// ...
}
export default Category
Hook Parameters
idstringRequiredMutation Function Parameters
AdminPostProductCategoriesCategoryProductsBatchReqAdminPostProductCategoriesCategoryProductsBatchReqRequiredThe details of the products to add to the product category.
AdminPostProductCategoriesCategoryProductsBatchReqAdminPostProductCategoriesCategoryProductsBatchReqRequiredMutation Function Returned Data
The product category's details.
useAdminDeleteProductsFromCategory
This hook removes a list of products from a product category.
Example
import React from "react"
import { useAdminDeleteProductsFromCategory } from "medusa-react"
type ProductsData = {
id: string
}
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const deleteProducts = useAdminDeleteProductsFromCategory(
productCategoryId
)
// ...
const handleDeleteProducts = (
productIds: ProductsData[]
) => {
deleteProducts.mutate({
product_ids: productIds
}, {
onSuccess: ({ product_category }) => {
console.log(product_category.products)
}
})
}
// ...
}
export default Category
Hook Parameters
idstringRequiredMutation Function Parameters
AdminDeleteProductCategoriesCategoryProductsBatchReqAdminDeleteProductCategoriesCategoryProductsBatchReqRequiredThe details of the products to delete from the product category.
AdminDeleteProductCategoriesCategoryProductsBatchReqAdminDeleteProductCategoriesCategoryProductsBatchReqRequiredMutation Function Returned Data
The product category's details.
Queries
useAdminProductCategories
This hook
Example
To list product categories:
import React from "react"
import { useAdminProductCategories } from "medusa-react"
function Categories() {
const {
product_categories,
isLoading
} = useAdminProductCategories()
return (
<div>
{isLoading && <span>Loading...</span>}
{product_categories && !product_categories.length && (
<span>No Categories</span>
)}
{product_categories && product_categories.length > 0 && (
<ul>
{product_categories.map(
(category) => (
<li key={category.id}>{category.name}</li>
)
)}
</ul>
)}
</div>
)
}
export default Categories
To specify relations that should be retrieved within the product category:
import React from "react"
import { useAdminProductCategories } from "medusa-react"
function Categories() {
const {
product_categories,
isLoading
} = useAdminProductCategories({
expand: "category_children"
})
return (
<div>
{isLoading && <span>Loading...</span>}
{product_categories && !product_categories.length && (
<span>No Categories</span>
)}
{product_categories && product_categories.length > 0 && (
<ul>
{product_categories.map(
(category) => (
<li key={category.id}>{category.name}</li>
)
)}
</ul>
)}
</div>
)
}
export default Categories
By default, only the first 100 records are retrieved. You can control pagination by specifying the limit and offset properties:
import React from "react"
import { useAdminProductCategories } from "medusa-react"
function Categories() {
const {
product_categories,
limit,
offset,
isLoading
} = useAdminProductCategories({
expand: "category_children",
limit: 20,
offset: 0
})
return (
<div>
{isLoading && <span>Loading...</span>}
{product_categories && !product_categories.length && (
<span>No Categories</span>
)}
{product_categories && product_categories.length > 0 && (
<ul>
{product_categories.map(
(category) => (
<li key={category.id}>{category.name}</li>
)
)}
</ul>
)}
</div>
)
}
export default Categories
Hook Parameters
Filters and pagination configurations to apply on the retrieved product categories.
Query Returned Data
countnumberRequiredlimitnumberRequiredoffsetnumberRequiredAn array of product category details.
useAdminProductCategory
This hook retrieves a product category's details.
Example
A simple example that retrieves an order by its ID:
import React from "react"
import { useAdminProductCategory } from "medusa-react"
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const {
product_category,
isLoading,
} = useAdminProductCategory(productCategoryId)
return (
<div>
{isLoading && <span>Loading...</span>}
{product_category && (
<span>{product_category.name}</span>
)}
</div>
)
}
export default Category
To specify relations that should be retrieved:
import React from "react"
import { useAdminProductCategory } from "medusa-react"
type Props = {
productCategoryId: string
}
const Category = ({
productCategoryId
}: Props) => {
const {
product_category,
isLoading,
} = useAdminProductCategory(productCategoryId, {
expand: "category_children"
})
return (
<div>
{isLoading && <span>Loading...</span>}
{product_category && (
<span>{product_category.name}</span>
)}
</div>
)
}
export default Category
Hook Parameters
idstringRequired