To use Autosuggest, you must treat it as a controlled component. You need to manage the input value and the suggestions list in your component state. You must provide handlers for fetching and clearing suggestions, as well as functions to determine the suggestion value and how to render each suggestion.
import React from 'react';
import Autosuggest from 'react-autosuggest';
// Data source
const languages = [
{ name: 'C', year: 1972 },
{ name: 'Elm', year: 2012 },
];
// Logic to filter suggestions
const getSuggestions = value => {
const inputValue = value.trim().toLowerCase();
const inputLength = inputValue.length;
return inputLength === 0 ? [] : languages.filter(lang =>
lang.name.toLowerCase().slice(0, inputLength) === inputValue
);
};
// Logic to get the string value from a suggestion object
const getSuggestionValue = suggestion => suggestion.name;
// Logic to render the suggestion UI
const renderSuggestion = suggestion => (
<div>
{suggestion.name}
</div>
);
class Example extends React.Component {
constructor() {
super();
this.state = {
value: '',
suggestions: []
};
}
onChange = (event, { newValue }) => {
this.setState({ value: newValue });
};
onSuggestionsFetchRequested = ({ value }) => {
this.setState({ suggestions: getSuggestions(value) });
};
onSuggestionsClearRequested = () => {
this.setState({ suggestions: [] });
};
render() {
const { value, suggestions } = this.state;
const inputProps = {
placeholder: 'Type a programming language',
value,
onChange: this.onChange
};
return (
<Autosuggest
suggestions={suggestions}
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
getSuggestionValue={getSuggestionValue}
renderSuggestion={renderSuggestion}
inputProps={inputProps}
/>
);
}
}