With React InstantSearch, I am trying to a) use a custom search box and b) access the searchState (to determine if the user is searching or not).
This code causes Maximum update depth exceeded
when something is typed in the searchbox. As shown in the comment, replacing CustomSearch
with the default Searchbox
fixes the problem.
Codesandbox: https://codesandbox.io/s/algolia-react-forked-rwz22?file=/src/Search.js:253-886
const CustomSearch = () => {
const Component = connectSearchBox(({ currentRefinement, refine }) => (
<input
type="search"
style={{ border: "1px solid black" }}
value={currentRefinement}
onChange={(e) => refine(e.currentTarget.value)}
/>
));
return <Component />;
};
function Search() {
const [searchState, setSearchState] = React.useState({});
return (
<InstantSearch
onSearchStateChange={setSearchState}
searchState={searchState}
searchClient={searchClient}
indexName="movies"
>
<CustomSearch /> {/* <SearchBox/> works*/}
</InstantSearch>
);
}
Here are the connectSearchBox
docs andhere is a small description about InstantSearch in controlled mode.