@shopify/shop-minis-react
Version:
React component library for Shopify Shop Minis with Tailwind CSS v4 support (source-only, requires TypeScript)
49 lines (41 loc) • 1.12 kB
text/typescript
import {useMemo} from 'react'
import {useShopActions} from '../../internal/useShopActions'
import {useShopActionsPaginatedDataFetching} from '../../internal/useShopActionsPaginatedDataFetching'
import {
PaginatedDataHookOptionsBase,
PaginatedDataHookReturnsBase,
ProductVariant,
} from '../../types'
export interface UseProductVariantsParams extends PaginatedDataHookOptionsBase {
/**
* The product ID to fetch variants for.
*/
id: string
}
interface UseProductVariantsReturns extends PaginatedDataHookReturnsBase {
/**
* The product variants returned from the query.
*/
variants: ProductVariant[] | null
}
export const useProductVariants = (
params: UseProductVariantsParams
): UseProductVariantsReturns => {
const {getProductVariants} = useShopActions()
const {skip = false, ...restParams} = params
const {data, ...rest} = useShopActionsPaginatedDataFetching(
getProductVariants,
restParams,
{
skip,
hook: 'useProductVariants',
}
)
const variants = useMemo(() => {
return data ?? null
}, [data])
return {
...rest,
variants,
}
}