frequentlyBoughtTogether
The frequentlyBoughtTogether function lets you render Frequently Bought Together items.
Installation
The Recommend JavaScript package is available on the npm registry.
1
2
3
yarn add @algolia/recommend-js
# or
npm install @algolia/recommend-js
If you don’t want to use a package manager, use a standalone endpoint:
1
2
3
4
5
6
<script src="https://cdn.jsdelivr.net/npm/@algolia/recommend-js"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/recommend"></script>
<script>
  const { frequentlyBoughtTogether, relatedProducts, trendingItems, trendingFacets } = window['@algolia/recommend-js'];
  const recommend = window['@algolia/recommend'];
</script>
Usage
First, specify a container to inject the component into.
1
<div id="frequentlyBoughtTogether"></div>
Then, call the frequentlyBoughtTogether function and provide the container.
It can be a CSS selector or an Element.
You can customize how to render each item by passing a custom component to the itemComponent prop.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/** @jsx h */
import { h } from 'preact';
import { frequentlyBoughtTogether } from '@algolia/recommend-js';
import recommend from '@algolia/recommend';
const recommendClient =  recommend('YourApplicationID', 'YourSearchOnlyAPIKey');
const indexName = 'YOUR_INDEX_NAME';
const currentObjectID = 'YOUR_OBJECT_ID';
frequentlyBoughtTogether({
  container: '#frequentlyBoughtTogether',
  recommendClient,
  indexName,
  objectIDs: [currentObjectID],
  itemComponent({ item }) {
    return (
      <pre>
        <code>{JSON.stringify(item)}</code>
      </pre>
    );
  },
});
If you don’t use JSX in your project, you can return tagged templates using htm or use createElement and Fragment from itemComponent, headerComponent, and fallbackComponent.
With createElement
Use createElement and Fragment in every component prop to create components without JSX.
They’re bound to Preact 10’s createElement and Fragment.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { frequentlyBoughtTogether } from '@algolia/recommend-js';
import recommend from '@algolia/recommend';
const recommendClient = recommend('YourApplicationID', 'YourSearchOnlyAPIKey');
const indexName = 'YOUR_INDEX_NAME';
const currentObjectID = 'YOUR_OBJECT_ID';
frequentlyBoughtTogether({
  container: '#frequentlyBoughtTogether',
  recommendClient,
  indexName,
  objectIDs: [currentObjectID],
  itemComponent({ item, createElement, Fragment }) {
    return createElement(
      'pre',
      null,
      createElement('code', null, JSON.stringify(item))
    );
  },
});
With html
Use the exposed html function.
This function is bound with htm.
It allows you to pass templates as HTML strings.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { frequentlyBoughtTogether } from '@algolia/recommend-js';
import recommend from '@algolia/recommend';
const recommendClient = recommend('YourApplicationID', 'YourSearchOnlyAPIKey');
const indexName = 'YOUR_INDEX_NAME';
const currentObjectID = 'YOUR_OBJECT_ID';
frequentlyBoughtTogether({
  container: '#frequentlyBoughtTogether',
  recommendClient,
  indexName,
  objectIDs: [currentObjectID],
  itemComponent({ item, html }) {
    return html`<pre>
      <code>${JSON.stringify(item)}</code>
    </pre>`;
  },
});
Parameters
| Parameter | Description | ||
|---|---|---|---|
          
            itemComponent
          
         | 
        
           
                
                type: ({ item, createElement, Fragment, html }) => JSX.Element | VNode | VNode[]
                
               
              
                
                        Required
                
               
          The function to display each item.  | 
      ||
          
            container
          
         | 
        
           
                
                type: string | HTMLElement
                
               
          The container for the component. You can either pass a CSS selector or an Element. If several containers match the selector, it picks the first one. When   | 
      ||
          
            headerComponent
          
         | 
        
           
                
                type: ({ classNames, recommendations, translations, Fragment, createElement, html }) => JSX.Element | VNode | VNode[]
                
               
          The function to render a header for your items. The default implementation is: 
Copy
 
 | 
      ||
          
            fallbackComponent
          
         | 
        
           
                
                type: ({ createElement, Fragment, html }) => JSX.Element | VNode | VNode[]
                
               
          A fallback component to render when no recommendations are returned.  | 
      ||
          
            view
          
         | 
        
           
                
                type: ViewProps
                
               
          The view component to render your items into. For example, you can use the  The  The default implementation is: 
Copy
 
 | 
      ||
          
            environment
          
         | 
        
           
                
                type: typeof window
                
               
              
                
                  default: window
                
               
          The environment in which your application is running.
This is useful when using Recommend in a different context than   | 
      
| Parameter | Description | ||
|---|---|---|---|
          
            classNames
          
         | 
        
           
                
                type: FrequentlyBoughtTogetherClassNames
                
               
          The class names for the component. 
Copy
 
 | 
      ||
          
            translations
          
         | 
        
           
                
                type: FrequentlyBoughtTogetherTranslations
                
               
          The translations for the component. 
Copy
 
 | 
      
This function also accepts all the props that useFrequentlyBoughtTogether supports:
| Parameter | Description | 
|---|---|
          
            recommendClient
          
         | 
        
           
                
                type: RecommendClient
                
               
              
                
                        Required
                
               
          The initialized Algolia Recommend client.  | 
      
          
            indexName
          
         | 
        
           
                
                type: string
                
               
              
                
                        Required
                
               
          The name of the target index.  | 
      
          
            objectIDs
          
         | 
        
           
                
                type: string[]
                
               
              
                
                        Required
                
               
          An array of  If you specify multiple  Each   | 
      
          
            maxRecommendations
          
         | 
        
           
                
                type: number
                
               
          The number of recommendations to retrieve. Depending on the available recommendations and the other request parameters, the actual number of hits may be lower than that.
If   | 
      
          
            threshold
          
         | 
        
           
                
                type: number
                
               
          The threshold for the recommendations confidence score (between 0 and 100). Only recommendations with a greater score are returned.  | 
      
          
            queryParameters
          
         | 
        
           
                
                type: Omit<SearchParameters, 'page' | 'hitsPerPage' | 'offset' | 'length'>
                
               
          List of search parameters to send.  | 
      
          
            transformItems
          
         | 
        
           
                
                type: (items: Array<RecordWithObjectID<TItem>>) => items
                
               
          A function to transform the retrieved items before passing them to the component. It’s useful when adding, removing, changing, or reordering items.  |