-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathApp.js
More file actions
63 lines (56 loc) · 1.33 KB
/
App.js
File metadata and controls
63 lines (56 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import React from "react";
import Search from "./components/Search";
import Header from "./components/Header";
import Display from "./components/Display";
import Footer from "./components/Footer";
class App extends React.Component {
constructor() {
super();
this.state = { movie: [], query: "", page: 1 };
this.receiveQuery = this.receiveQuery.bind(this);
this.search = this.search.bind(this);
this.nextPage = this.nextPage.bind(this);
}
receiveQuery(query) {
this.setState({
query
});
}
search() {
const inputString = this.state.query;
console.log(inputString);
fetch(
`http://www.omdbapi.com/?s=${inputString}&page=${
this.state.page
}&apikey=7a98d1bb`
)
.then(function(response) {
return response.json();
})
.then(data => {
this.setState({
movie: data.Search
});
});
}
nextPage() {
this.setState({
page: this.state.page + 1
}, ()=>this.search());
}
render() {
return (
<div className='app'>
<Header />
<Search
receiveQuery={this.receiveQuery}
search={this.search}
query={this.state.query}
/>
<Display movies={this.state.movie} nextPage={this.nextPage} />
<Footer />
</div>
);
}
}
export default App;