Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import useDebounce from "react-use/lib/useDebounce";
- import { useMemo, useState, Dispatch, SetStateAction } from "react";
- import Fuse, { FuseOptions } from "fuse.js";
- export default <T>(
- data: ReadonlyArray<T>,
- fuseOptions: FuseOptions<T>,
- debounce: number = 500
- ): [ReadonlyArray<T>, string, Dispatch<SetStateAction<string>>] => {
- const [filteredData, setFilteredData] = useState(data);
- const [query, setQuery] = useState("");
- const fuseSearch = useMemo(() => new Fuse(data, fuseOptions), [
- data,
- fuseOptions
- ]);
- useDebounce(
- () => setFilteredData(query ? fuseSearch.search(query) : data),
- debounce,
- [query, data, debounce]
- );
- return [filteredData, query, setQuery];
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement