useInstantSearch()
This is the React InstantSearch v7 documentation. React InstantSearch v7 is the latest version of React InstantSearch and the stable version of React InstantSearch Hooks.
If you were using React InstantSearch v6, you can upgrade to v7.
If you were using React InstantSearch Hooks, you can still use the React InstantSearch v7 documentation, but you should check the upgrade guide for necessary changes.
If you want to keep using React InstantSearch v6, you can find the archived documentation.
const { indexUiState, setIndexUiState, uiState, setUiState, indexRenderState, renderState, results, scopedResults refresh, status, error, addMiddlewares, } = useInstantSearch({ catchError })
1
import { useInstantSearch } from 'react-instantsearch';
About this Hook
A React Hook that lets you access the InstantSearch API and interact with its state.
This is useful to access and update the UI state, access the search results, refresh the search, or use middlewares.
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import {
InstantSearch,
RefinementList,
useInstantSearch,
} from 'react-instantsearch';
function Discounts() {
const { indexUiState, setIndexUiState } = useInstantSearch();
const disabled = indexUiState.refinementList?.discounts?.includes('-50% off');
return (
<button
type="button"
disabled={disabled}
onClick={() => {
setIndexUiState((prevIndexUiState) => ({
...prevIndexUiState,
refinementList: {
...prevIndexUiState.refinementList,
discounts: ['-50% off', 'free shipping'],
},
}));
}}
>
Show discounts
</button>
);
}
function App({ searchClient }) {
return (
<InstantSearch searchClient={searchClient} indexName="instant_search">
<Discounts />
<RefinementList attribute="discounts" />
</InstantSearch>
);
}
Parameters
Parameter | Description |
---|---|
catchError
|
type: boolean
default: false
If |
Returns
Parameter | Description | ||
---|---|---|---|
indexUiState
|
type: IndexUiState
The |
||
setIndexUiState
|
type: (indexUiState: IndexUiState) => void | ((prevIndexUiState: IndexUiState) => IndexUiState) => void
Updates the This function either takes a new index Make sure to mount the widget responsible for the UI state. For example, mount a |
||
Copy
|
|||
results
|
type: SearchResults
The search results. |
||
uiState
|
type: UiState
The This is an object with each index name as key and the current UI state for that index as value. |
||
setUiState
|
type: (uiState: UiState) => void | ((prevUiState: UiState) => UiState) => void
Function to update the This function either takes a new Make sure to mount the widget responsible for the UI state. For example, mount a |
||
Copy
|
|||
scopedResults
|
type: ScopedResult[]
An array with the results of the index, as well as the results of all adjacent |
||
Copy
|
|||
indexRenderState
|
type: IndexRenderState
The |
||
renderState
|
since: v7.2.0
type: RenderState
The |
||
refresh
|
type: () => void
Clears the search client’s cache and performs a new search. This is useful to update the results once an indexing operation has finished. |
||
addMiddlewares
|
type: (...middlewares: Middleware[]) => () => void
Adds a |
||
Copy
|
|||
status
|
type: "idle" | "loading" | "stalled" | "error"
The status of the search happening. Possible values are:
|
||
error
|
type: Error | undefined
The error that occurred during the search. This is only valid when |