UseProductOptions
This hook is used to get the variation options for a product. It returns the variation options, selected options, and functions to set the selected options and check if an option is available for a variation option.
note
This hook is used only in the ProductDetail component to render the variation options for a product.
Use useProductVariations hook to get the variation options for a product in product list.
Table of Contents
| props | type | description |
|---|---|---|
| variationOptions | array | This is the list of variation options for the product. |
| setOption | function | This function is used to set the selected option for a variation option. It will update the selectedOptions state. You can call it like setOption(optionName, optionValue) |
| selectedOptions | object | This is the state that contains the selected options for all the variation options. |
| isOptionAvilableV2 | function | This function is used to check if a particular option is available for a variation option. It will return true if the option is available, otherwise false. You can call it like isOptionAvilableV2(optionName, optionValue) |
| getAvailableOptions | function | This function is used to get the available options for a variation option. It will return the available options for the variation option. |
| product | object | This is the product object that is similar to the one returned by the useProductDetail hook. |
| variants | array | This is the list of variants for the product. |
| options | array | This is the list of options for the product. |
Example of using the useProductOptions hook
import { useProductOptions } from '@appmaker-xyz/shopify';
import React from 'react';
import { View } from 'react-native';
import ColorPicker from './ProductColorPicker';
import SizePicker from './ProductSizePicker';
import ProductVariationSelect from './ProductVariationSelect';
export default function VariationChooser(props) {
const {
variationOptions,
setOption,
selectedOptions,
isOptionAvilableV2,
getAvailableOptions,
} = useProductOptions(props);
const VariationOptionsItems = (props) => {
// In the following code, you can see for different variation options, we are rendering different components.
const { name } = props;
switch (name) {
case 'Size':
// SizePicker is a custom component that we have created to render the size options.
return (
<View>
<SizePicker {...props} />
</View>
);
case 'Color':
// ColorPicker is a custom component that we have created to render the color options.
return (
<ColorPicker
{...props}
optionName={name}
getAvailableOptions={getAvailableOptions}
isOptionAvilable={isOptionAvilableV2}
/>
);
default:
// For any other variation option, we are rendering the default ProductVariationSelect component.
return <ProductVariationSelect {...props} />;
}
};
return (
<View>
{variationOptions.map((variationOption) => {
return (
<View key={`options-${variationOption.key}`}>
<VariationOptionsItems
name={variationOption.name}
isOptionAvilable={isOptionAvilableV2}
options={variationOption.options}
selectedOption={
selectedOptions && selectedOptions[variationOption?.key]
}
onClick={(item) => {
setOption(variationOption.key, item.value);
}}
/>
</View>
);
})}
</View>
);
}