A Lunr powered client side search react component.
disclaimer: This is still a bit of a work in progress. It has some limitations, so use at your discretion
npm install react-search-lunr
Import ReactSearchLunr
where you would like to use it.
import ReactSearchLunr from 'react-search-lunr'
Supply some documents
, specify the id
(ref
in Lunr), some fields
, and a
filter
to search by. Then just supply a children
render function which will
receive results
.
<ReactSearchLunr
id="id"
fields={['name', 'body']}
documents={[
{ name: 'aldrin', body: 'followed neil armstrong to the moon' },
{ name: 'armstrong', body: 'first to land on the moon' }
]}>
{results =>
result.map(result => (
<div key={result.ref}>
<h1>{result.item.name}</h1>
<p>{result.item.body}</p>
</div>
))
}
</ReactSearchLunr>
ReactSearchLunr
does not catch errors that Lunr throws (e.g. QueryParseError
), so
you should wrap ReactSearchLunr
in an error
boundary component. This is
particularly helpful if you are piping user input into the filter
prop.
This isn't quite finished. Some of the planned changes:
documents
after component construction