enter image description hereI am building this search component for searching books comparing them with a specific keyword user types. I have created this search function and it works perfectly well like this:
import React from 'react'
function Search() {
return (
<div>
{console.log("Hello World")}
</div>
)
}
export default Search
But, when I add functionality to my code it breaks saying TypeError: Object is not a function. Here is the code that breaks:
import React, { useState, useEffect } from "react";
import * as BooksAPI from "../BooksAPI";
import Spinner from "./Spinner";
import SearchResults from "./SearchResults";
function Search() {
const [showSearchPage, setShowSearchPage] = useState(false);
const [searchItem, setSearchItem] = useState("");
const [data, setData] = useState({});
useEffect(
async () => {
const booksData = await BooksAPI.search(searchItem);
setData({ data: booksData });
},
[searchItem]
);
return (
<div className="search-books">
<div className="search-books-bar">
<button
className="close-search"
onClick={() => setShowSearchPage({ showSearchPage: false })}
>
Close
</button>
<div className="search-books-input-wrapper">
<input
type="text"
placeholder="Search by title or author"
value={searchItem}
onChange={(e) => {
setSearchItem({ searchItem: e.target.value });
}}
/>
</div>
</div>
<div className="search-books-results">
<ol className="books-grid">
{data.length !== undefined ? (
<div className="search">
<SearchResults data={data} />
{console.log(data)}
</div>
) : (
<Spinner />
)}
<li />
</ol>
</div>
</div>
);
}
export default Search;