Skip to content

Instantly share code, notes, and snippets.

@leofab86
leofab86 / autoComplete-snippet.js
Last active May 17, 2019 05:51
Fuzzy search autocomplete v1.0.0
render () {
return (
<Autocomplete
value={this.state.searchTerm}
items={this.getSearchResults()}
renderMenu={this.reactVirtualizedList}
renderItem={this.renderItem}
getItemValue={ item => item.name }
onChange={(e, value) => this.setState({searchTerm: value})}
/>
@leofab86
leofab86 / getSearchResults.js
Last active May 17, 2019 05:10
Fuzzy search autocomplete v1.0.0
getSearchResults = () => {
const {searchTerm} = this.state;
return searchTerm ? this.searchEngine.search(searchTerm) : []
// searchEngine.search is the expensive search algorithm
};
@leofab86
leofab86 / autocomplete-split-components.js
Last active May 20, 2019 12:11
Fuzzy search autocomplete v1.1.0
//autocomplete.js
render () {
return (
<div>
<input
onChange={ e => this.setState({searchTerm: e.target.value})}
value={this.state.searchTerm}/>
<SearchResults
@leofab86
leofab86 / searchResults-componentDidUpdate.js
Last active May 20, 2019 12:10
Fuzzy search autocomplete v1.1.0
//searchResults.js
componentDidUpdate(prevProps) {
const {searchTerm, searchEngine} = this.props;
if(searchTerm && searchTerm !== prevProps.searchTerm) {
this.setState({
searchResults: searchEngine.search(searchTerm)
})
}
}
@leofab86
leofab86 / searchResults-promise.js
Last active May 23, 2019 17:03
Fuzzy search autocomplete v1.1.1
//searchResults.js
componentDidUpdate(prevProps) {
const {searchTerm, searchEngine} = this.props;
if(searchTerm && searchTerm !== prevProps.searchTerm) {
/* stick the update with the expensive search method into
a promise callback: */
Promise.resolve().then(() => {
this.setState({
searchResults: searchEngine.search(searchTerm)
@leofab86
leofab86 / searchResults-setTimeout.js
Last active May 23, 2019 17:05
Fuzzy search autocomplete v1.1.1
//searchResults.js
componentDidUpdate(prevProps) {
const {searchTerm, searchEngine} = this.props;
if(searchTerm && searchTerm !== prevProps.searchTerm) {
/* stick the update with the expensive search method into
a setTimeout callback: */
const setTimeoutCallback = () => {
this.setState({
searchResults: searchEngine.search(searchTerm)
@leofab86
leofab86 / autocomplete.js
Last active May 20, 2019 12:11
Fuzzy search autosuggest v1.2.0
//autocomplete.js
render () {
return (
<div>
<input
onChange={ e => this.setState({searchTerm: e.target.value})}
value={this.state.searchTerm}/>
<SearchResults
searchEngine={this.props.searchEngine}
@leofab86
leofab86 / server.js
Last active May 19, 2019 02:21
Fuzzy search autocomplete v1.2.0
app.route('/prep-staging/testSearch')
.post(bodyParser.json(), (req, res) => {
const {data, searchTerm} = req.body
const engine = new SearchEngine(data)
const searchResults = engine.search(searchTerm)
res.send({searchResult})
@leofab86
leofab86 / searchResults-fetch.js
Last active May 23, 2019 17:04
Fuzzy search autocomplete v1.2.0
//searchResults.js
componentDidUpdate(prevProps) {
const {searchTerm, searchEngine, data} = this.props;
if(searchTerm && searchTerm !== prevProps.searchTerm) {
/* ping the search route with the searchTerm and update state
with the results when they return: */
fetch(`testSearch`, {
method: 'POST',
body: JSON.stringify({data, searchTerm}),
@leofab86
leofab86 / searchResults.js
Last active May 23, 2019 04:38
Fuzzy search autocomplete v1.2.2
//searchResults.js
export default class SearchResults extends React.Component {
constructor (props) {
super();
this.state = {
searchResults: [],
}
//initiate the webworker:
this.webWorker = new Worker('...path to webWorker.js')