import React, { useState, useEffect, useCallback } from 'react' import axios from 'axios' import { useDispatch } from 'react-redux' import { debounce } from 'debounce' import { setText, setLang } from '../store/actions.js' async function search(searchTerm) { const regex = new RegExp(searchTerm, 'i') const result = [] const data = await import('../../data/gutenberg.json').then( module => module.default ) for (let entry of data) { if (regex.test(entry.title[0]) || regex.test(entry.author[0])) { result.push(entry) } if (result.length >= 20) break } return result } const Book = ({ entry }) => { const dispatch = useDispatch() const { author, language, rights, subject, title, id } = entry const handleClick = async () => { const url = `https://gutenberg.muperfredi.de/texts/${id}/stripped-body` const text = await axios.get(url).then(res => res.data.body) dispatch(setText(text)) dispatch(setLang(language[0])) } return (