useRecommendation
Use recommendation query hook to request and retrieve data for recommendation widgets.
Generic response
RequestResponse
{
widgetRef,
actions: { onItemClick },
state: { page },
queryResult: { isLoading, isFetching, data: { content: articles = [] } = {} },
}
Import
RequestResponse
import { useRecommendation } from '@sitecore-search/react';
Example
RequestResponse
import type { RecommendationInitialState, RecommendationWidgetQuery } from '@sitecore-search/react';
import { WidgetDataType, useRecommendation, widget } from '@sitecore-search/react';
type ArticleModel = {
id: string;
name: string;
author?: string;
url?: string;
image_url?: string;
source_id?: string;
};
type RecommendationProps = {
title?: string;
itemsToDisplay?: number;
};
type InitialState = RecommendationInitialState<'itemsPerPage'>;
const DEFAULT_IMG_URL = 'https://placehold.co/500x300?text=No%20Image'; // TODO: Update with corresponding fallback image
export const RecommendationComponent = ({ title = '', itemsToDisplay = 6 }: RecommendationProps) => {
const {
widgetRef,
actions: { onItemClick },
queryResult: { isLoading, isFetching, data: { content: articles = [] } = {} },
} = useRecommendation<ArticleModel, InitialState>({
query: (query:RecommendationWidgetQuery) => query,
state: {
itemsPerPage: itemsToDisplay,
},
});
const loading = isLoading || isFetching;
return ( <div ref={widgetRef}> ... </div> );
};
const RecommendationBasicHorizontalStyledWidget = widget(RecommendationComponent, WidgetDataType.RECOMMENDATION, 'content');
export default RecommendationBasicHorizontalStyledWidget;
Note
Convert a UI component into a widget component before adding it to pages.
To convert a component into a widget component, pass the UI component to the widget
or setWidget
function.