The <SearchBox> component provides an input field for users to enter search queries.
Import
import { SearchBox } from 'react-instantsearch';
Props
Whether to trigger searches as the user types.<SearchBox searchAsYouType={false} />
Function to modify the query before searching.<SearchBox
queryHook={(query, search) => {
// Debounce search
clearTimeout(window.searchTimeout);
window.searchTimeout = setTimeout(() => search(query), 300);
}}
/>
Whether to ignore composition events (useful for Asian languages).<SearchBox ignoreCompositionEvents={true} />
Placeholder text for the search input.<SearchBox placeholder="Search products..." />
Whether to automatically focus the input on mount.<SearchBox autoFocus={true} />
Callback when the form is submitted.<SearchBox
onSubmit={(event) => {
event.preventDefault();
console.log('Search submitted');
}}
/>
Customize the text strings.<SearchBox
translations={{
submitButtonTitle: 'Submit search',
resetButtonTitle: 'Clear search',
}}
/>
CSS classes to customize the component styling.
Example
import { InstantSearch, SearchBox, Hits } from 'react-instantsearch';
import { liteClient as algoliasearch } from 'algoliasearch/lite';
const searchClient = algoliasearch(
'YourApplicationID',
'YourSearchOnlyAPIKey'
);
function App() {
return (
<InstantSearch searchClient={searchClient} indexName="products">
<SearchBox placeholder="Search products..." />
<Hits />
</InstantSearch>
);
}
With Debouncing
function App() {
return (
<InstantSearch searchClient={searchClient} indexName="products">
<SearchBox
placeholder="Search products..."
queryHook={(query, search) => {
clearTimeout(window.searchTimeout);
window.searchTimeout = setTimeout(() => search(query), 300);
}}
/>
<Hits />
</InstantSearch>
);
}
Search on Submit
function App() {
return (
<InstantSearch searchClient={searchClient} indexName="products">
<SearchBox
placeholder="Search products..."
searchAsYouType={false}
/>
<Hits />
</InstantSearch>
);
}