<HitsPerPage>
<HitsPerPage items={UseHitsPerPageProps['items']} // Optional props transformItems={UseHitsPerPageProps['transformItems']} classNames={Partial<HitsPerPageClassNames>} ...props={React.ComponentProps<'div'>} />
About this widget # A
<HitsPerPage>
is a widget that displays a menu of options to change the number of results per page.
If you only want to configure the number of hits per page without displaying a widget, you can use the <Configure>
widget with the hitsPerPage
search parameter.
You can also create your own UI with
useHitsPerPage()
.
Examples # A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import React from 'react';
import algoliasearch from 'algoliasearch/lite';
import { InstantSearch, HitsPerPage } from 'react-instantsearch-hooks-web';
const searchClient = algoliasearch('AJ0P3S7DWQ', '90dfaaf5755e694f341fe68f6e41a6d4');
function App() {
return (
<InstantSearch indexName="instant_search" searchClient={searchClient}>
<HitsPerPage
items={[
{ label: '8 hits per page', value: 8, default: true },
{ label: '16 hits per page', value: 16 },
]}
/>
</InstantSearch>
);
}
Props # A
items
# |
type: HitsPerPagePropsItem[]
Required
The list of available options, with each item:
|
||
Copy
|
|||
transformItems
# |
Optional
Receives the items and is called before displaying them. Should return a new array with the same shape as the original array. Useful for transforming, removing, or reordering items. In addition, the full |
||
Copy
|
|||
classNames
# |
type: Partial<HitsPerPageClassNames>
Optional
CSS classes to pass to the widget’s elements. This is useful to style widgets with class-based CSS frameworks like Bootstrap or Tailwind CSS.
|
||
Copy
|
|||
...props
# |
type: React.ComponentProps<'div'>
Optional
Any |
||
Copy
|
Hook# A
React InstantSearch Hooks let you create your own UI for the <HitsPerPage>
widget with useHitsPerPage()
. Hooks provide APIs to access the widget state and interact with InstantSearch.
The useHitsPerPage()
Hook accepts parameters and returns APIs.
Usage#
First, create your React component:
import { useHitsPerPage } from 'react-instantsearch-hooks-web';
function CustomHitsPerPage(props) {
const {
items,
refine,
createURL,
hasNoResults,
} = useHitsPerPage(props);
return <>{/* Your JSX */}</>;
}
Then, render the widget:
<CustomHitsPerPage {...props} />
Parameters#
Hooks accept parameters. You can pass them manually, or forward the props from your custom component.
When you provide a function to Hooks, make sure to pass a stable reference with useCallback()
to avoid rendering endlessly. Objects and arrays are memoized so you don’t have to stabilize them.
items
# |
type: HitsPerPagePropsItem[]
Required
The list of available options, with each item:
|
||
Copy
|
|||
transformItems
# |
Receives the items and is called before displaying them. Should return a new array with the same shape as the original array. Useful for transforming, removing, or reordering items. In addition, the full |
||
Copy
|
APIs#
Hooks return APIs, such as state and functions. You can use them to build your UI and interact with React InstantSearch.
items
# |
type: HitsPerPageItem[]
The list of items the widget can display, with each item:
|
||
Copy
|
|||
hasNoResults
# |
type: boolean
Indicates whether the search has no results. |
||
Copy
|
|||
refine
# |
type: (value: number) => void
Sets the number of hits per page and triggers a search. |
||
Copy
|
|||
createURL
# |
type: (value: number) => string
Generates a URL of the next search state. |
||
Copy
|
Example#
1
2
3
4
5
6
7
8
import React from 'react';
import { useHitsPerPage } from 'react-instantsearch-hooks-web';
function CustomHitsPerPage(props) {
const { items, refine } = useHitsPerPage(props);
return <>{/* Your JSX */}</>;
}