<CurrentRefinements>
<CurrentRefinements // Optional props includedAttributes={string[]} excludedAttributes={string[]} transformItems={function} classNames={object} ...props={ComponentProps<'div'>} />
1
import { CurrentRefinements } from 'react-instantsearch-hooks-web';
About this widget # A
<CurrentRefinements>
is a widget that lets you display the list of active refinements in the search.
You can also create your own UI with
useCurrentRefinements()
.
Examples # A
1
2
3
4
5
6
7
8
9
10
11
12
13
import React from 'react';
import algoliasearch from 'algoliasearch/lite';
import { InstantSearch, CurrentRefinements } from 'react-instantsearch-hooks-web';
const searchClient = algoliasearch('AJ0P3S7DWQ', '90dfaaf5755e694f341fe68f6e41a6d4');
function App() {
return (
<InstantSearch indexName="instant_search" searchClient={searchClient}>
<CurrentRefinements />
</InstantSearch>
);
}
Props # A
includedAttributes
# |
type: string[]
default: []
The attributes to include (all by default). This parameter can’t be used with In the example below, only the |
||
Copy
|
|||
excludedAttributes
# |
type: string[]
default: ['query']
The attributes to exclude from the widget. This parameter can’t be used with In the example below, the |
||
Copy
|
|||
transformItems
# |
type: (items: object[], metadata: { results: SearchResults }) => object[]
default: items => items
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<CurrentRefinementsClassNames>
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 <CurrentRefinements>
widget with useCurrentRefinements()
. Hooks provide APIs to access the widget state and interact with InstantSearch.
The useCurrentRefinements()
Hook accepts parameters and returns APIs.
Usage#
First, create your React component:
import { useCurrentRefinements } from 'react-instantsearch-hooks-web';
function CustomCurrentRefinements(props) {
const { items, canRefine, refine } = useCurrentRefinements(props);
return <>{/* Your JSX */}</>;
}
Then, render the widget:
<CustomCurrentRefinements {...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 to avoid rendering endlessly (for example, with useCallback()
). Objects and arrays are memoized; you don’t need to stabilize them.
includedAttributes
# |
type: string[]
default: []
The attributes to include (all by default). This parameter can’t be used with In the example below, only the |
||
Copy
|
|||
excludedAttributes
# |
type: string[]
default: ['query']
The attributes to exclude from the widget. This parameter can’t be used with In the example below, the |
||
Copy
|
|||
transformItems
# |
type: (items: object[], metadata: { results: SearchResults }) => object[]
default: items => items
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: CurrentRefinementsItem[]
All the currently refined items grouped by attribute.
Copy
|
||
canRefine
# |
type: boolean
Whether the search state can be refined. |
||
refine
# |
type: (value: CurrentRefinementsItem) => void
Clears a single refinement and triggers a new search. |
Example#
1
2
3
4
5
6
7
8
import React from 'react';
import { useCurrentRefinements } from 'react-instantsearch-hooks-web';
function CustomCurrentRefinements(props) {
const { items, refine } = useCurrentRefinements(props);
return <>{/* Your JSX */}</>;
}