sceneie
Version:
A movie search app.
58 lines (53 loc) • 1.49 kB
JavaScript
import React, { useState, useEffect } from "react";
import Search from "./Search";
import axios from "axios";
import SearchResult from "./SearchResult";
const Body = () => {
const [searchValue, setSearchValue] = useState("");
const [results, setResults] = useState(null);
const [error, setError] = useState(null);
useEffect(() => {
if (searchValue) {
axios({
method: "GET",
url: `https://www.omdbapi.com/?apikey=${process.env.REACT_APP_API_KEY}&s=${searchValue}`
}).then(res => {
const { data } = res;
const { Response, Search } = data;
switch (Response) {
case "True":
setError(null);
setResults(Search);
break;
case "False":
setError(data.Error);
break;
default:
setError(JSON.stringify({ data }, null, 2));
break;
}
});
} else {
setError(null);
}
}, [searchValue]);
return (
<div id="body">
<Search searchValue={searchValue} setSearchValue={setSearchValue} />
{error && <span className="error">{error}</span>}
{!error && results && (
<div className="results">
{results.map(({ Poster, Title, Year }, i) => (
<SearchResult
key={i}
posterURL={Poster}
title={Title}
year={Year}
/>
))}
</div>
)}
</div>
);
};
export default Body;