J'utilise Algolia React InstantSearch, avec connectSearchBox pour créer une entrée personnalisée. La façon dont je suis en train de faire cela est ci-dessous:Réagir Algolia instantsearch connectSearchBox
const MySearchBox = connectSearchBox(({currentRefinement, refine}) => {
return (
<input
type="text"
placeholder="Search"
value={currentRefinement}
onFocus={()=> props.onFocus()}
onBlur={()=> props.onBlur()}
onChange={(e) => {refine(e.target.value)}}
/>
);
});
Et puis le code suivant à instancier:
<InstantSearch
onSearchStateChange={(result) => this.onSearchChange(result)}
appId={appId}
apiKey={apiKey}
indexName={index}>
<MySearchBox/>
</InstantSearch>
Cela fonctionne parfaitement. Cependant, ce que je voudrais faire est de pouvoir passer des accessoires à MySearchBox. Alors je fais quelque chose comme ceci:
const MySearchBox = (props) => {
connectSearchBox(({currentRefinement, refine}) => {
return (
<input
type="text"
....
/>
);
})
}
Ou ceci:
const MySearchBox = React.createClass({
render() {
return (
connectSearchBox(({currentRefinement, refine}) => {
return (
<input
type="text"
/>
);
})
)
}
});
Cependant, l'exécution de ce code, je reçois l'erreur suivante:
MYSEARCHBOX(...): A VALID REACT ELEMENT (OR NULL) MUST BE RETURNED. YOU MAY HAVE RETURNED UNDEFINED, AN ARRAY OR SOME OTHER INVALID OBJECT.
En fin de compte, Qu'est-ce qu'un moyen pour moi de passer des accessoires à MySearchBox?