1
- import React , { useState } from 'react' ;
1
+ import React , {
2
+ useState
3
+ } from 'react' ;
2
4
import styled from 'styled-components' ;
3
5
import Axios from 'axios' ;
4
6
@@ -7,7 +9,7 @@ import MovieComponent from './Components/MovieComponent';
7
9
import MovieInfoComponent from './Components/MovieInfoComponent' ;
8
10
9
11
10
- export const API_KEY = "50659391"
12
+ export const API_KEY = "50659391"
11
13
12
14
const Container = styled . div `
13
15
display: flex;
@@ -81,63 +83,84 @@ const Placeholder = styled.img`
81
83
82
84
function App ( ) {
83
85
84
- const [ searchQuery , updateSearchQuery ] = useState ( "" ) ;
85
- const [ timeoutId , updateTimeoutId ] = useState ( ) ;
86
- const [ movieList , updateMovieList ] = useState ( [ ] ) ;
87
- const [ selectedMovie , onMovieSelect ] = useState ( ) ;
88
-
89
- const fetchData = async ( searchString ) => {
90
- const response = await Axios . get (
91
- `https://www.omdbapi.com/?s=${ searchString } &apikey=${ API_KEY } ` ,
92
- ) ;
93
- // console.log(response.data);
94
- updateMovieList ( response . data . Search ) ;
95
- } ;
96
-
97
- const onTextChange = ( e ) => {
98
- // onMovieSelect("")
99
- clearTimeout ( timeoutId ) ;
100
- updateSearchQuery ( e . target . value ) ;
101
- const timeout = setTimeout ( ( ) => fetchData ( e . target . value ) , 500 ) ;
102
- updateTimeoutId ( timeout ) ;
103
- } ;
104
-
105
- return (
106
- < Container >
107
- < Header >
108
- < AppName >
109
- < MovieImage src = "/movie-icon.svg" />
110
- React Movie App
111
- </ AppName >
112
- < SearchBox >
113
- < SearchIcon src = "/search-icon.svg" />
114
- < SearchInput
115
- placeholder = "Search Movie"
116
- value = { searchQuery }
117
- onChange = { onTextChange }
118
- />
119
- </ SearchBox >
120
- </ Header >
121
-
122
- { selectedMovie && < MovieInfoComponent
123
- selectedMovie = { selectedMovie }
124
- onMovieSelect = { onMovieSelect } /> }
125
-
126
- < MovieListContainer >
127
- {
128
- movieList . length
129
- ? movieList . map ( ( movie , index ) =>
130
- < MovieComponent
131
- key = { index }
132
- movie = { movie }
133
- onMovieSelect = { onMovieSelect }
134
- /> )
135
- : < Placeholder src = "/movie-icon.svg" alt = "placeholder" />
136
- }
137
-
138
- </ MovieListContainer >
139
- </ Container >
140
- ) ;
141
- }
142
-
143
- export default App ;
86
+ const [ searchQuery , updateSearchQuery ] = useState ( "" ) ;
87
+ const [ timeoutId , updateTimeoutId ] = useState ( ) ;
88
+ const [ movieList , updateMovieList ] = useState ( [ ] ) ;
89
+ const [ selectedMovie , onMovieSelect ] = useState ( ) ;
90
+
91
+ const fetchData = async ( searchString ) => {
92
+ const response = await Axios . get (
93
+ `https://www.omdbapi.com/?s=${ searchString } &apikey=${ API_KEY } ` ,
94
+ ) ;
95
+ // console.log(response.data);
96
+ updateMovieList ( response . data . Search ) ;
97
+ } ;
98
+
99
+ const onTextChange = ( e ) => {
100
+ // onMovieSelect("")
101
+ clearTimeout ( timeoutId ) ;
102
+ updateSearchQuery ( e . target . value ) ;
103
+ const timeout = setTimeout ( ( ) => fetchData ( e . target . value ) , 500 ) ;
104
+ updateTimeoutId ( timeout ) ;
105
+ } ;
106
+
107
+ return ( <
108
+ Container >
109
+ <
110
+ Header >
111
+ <
112
+ AppName >
113
+ <
114
+ MovieImage src = "/movie-icon.svg" / >
115
+ React Movie App <
116
+ / AppName > <
117
+ SearchBox >
118
+ <
119
+ SearchIcon src = "/search-icon.svg" / >
120
+ <
121
+ SearchInput placeholder = "Search Movie"
122
+ value = {
123
+ searchQuery
124
+ }
125
+ onChange = {
126
+ onTextChange
127
+ }
128
+ /> <
129
+ / SearchBox > <
130
+ / Header >
131
+
132
+ {
133
+ selectedMovie && < MovieInfoComponent
134
+ selectedMovie = {
135
+ selectedMovie
136
+ }
137
+ onMovieSelect = {
138
+ onMovieSelect
139
+ }
140
+ /> }
141
+
142
+ <
143
+ MovieListContainer > {
144
+ movieList . length ?
145
+ movieList . map ( ( movie , index ) =>
146
+ <
147
+ MovieComponent key = {
148
+ index
149
+ }
150
+ movie = {
151
+ movie
152
+ }
153
+ onMovieSelect = {
154
+ onMovieSelect
155
+ }
156
+ /> ) : < Placeholder src = "/movie-icon.svg"
157
+ alt = "placeholder" / >
158
+ }
159
+
160
+ <
161
+ / MovieListContainer > <
162
+ / Container >
163
+ );
164
+ }
165
+
166
+ export default App ;
0 commit comments