get Selected Product Options
The returns the selected options from the Request search parameters. The selected options can then be easily passed to your GraphQL query with .
Anchor to Props-parametersParameters
- Anchor to requestrequestrequestRequestRequestrequiredrequired
Anchor to Props-returnsReturns
SelectedOptionInput[]SelectedOptionInput[]
Examples
import {getSelectedProductOptions} from '@shopify/hydrogen';
import {json} from '@shopify/remix-oxygen';
export async function loader({request, params, context}) {
const selectedOptions = getSelectedProductOptions(request);
const {product} = await context.storefront.query(PRODUCT_QUERY, {
variables: {
handle: params.productHandle,
selectedOptions,
},
});
return json({product});
}
const PRODUCT_QUERY = `#graphql
query Product($handle: String!, $selectedOptions: [SelectedOptionInput!]!) {
product(handle: $handle) {
title
description
options {
name
values
}
selectedVariant: variantBySelectedOptions(selectedOptions: $selectedOptions) {
...ProductVariantFragment
}
}
}
`;
Examples
Example code
Description
I am the default example
JavaScript
import {getSelectedProductOptions} from '@shopify/hydrogen'; import {json} from '@shopify/remix-oxygen'; export async function loader({request, params, context}) { const selectedOptions = getSelectedProductOptions(request); const {product} = await context.storefront.query(PRODUCT_QUERY, { variables: { handle: params.productHandle, selectedOptions, }, }); return json({product}); } const PRODUCT_QUERY = `#graphql query Product($handle: String!, $selectedOptions: [SelectedOptionInput!]!) { product(handle: $handle) { title description options { name values } selectedVariant: variantBySelectedOptions(selectedOptions: $selectedOptions) { ...ProductVariantFragment } } } `;TypeScript
import {getSelectedProductOptions} from '@shopify/hydrogen'; import {json, type LoaderArgs} from '@shopify/remix-oxygen'; export async function loader({request, params, context}: LoaderArgs) { const selectedOptions = getSelectedProductOptions(request); const {product} = await context.storefront.query(PRODUCT_QUERY, { variables: { handle: params.productHandle, selectedOptions, }, }); return json({product}); } const PRODUCT_QUERY = `#graphql query Product($handle: String!, $selectedOptions: [SelectedOptionInput!]!) { product(handle: $handle) { title description options { name values } selectedVariant: variantBySelectedOptions(selectedOptions: $selectedOptions) { ...ProductVariantFragment } } } `;
Was this page helpful?