11import { useState , useEffect } from "react" ;
22import './App.css' ;
33import Button from "./component/Button" ;
4+ import Input from "./component/Input" ;
5+ import Quote from "./component/Quote" ;
46
57function App ( ) {
68 const [ quote , setQuote ] = useState (
79 {
8- quote : "loading ..." ,
9- author : "loading ..."
10+ quote : "Loading quote ..." ,
11+ author : "Loading quote's author ..."
1012 }
1113 ) ;
1214
15+ const [ keyword , setKeyword ] = useState ( "" ) ;
16+
17+ const [ searchQuotes , setSearchQuotes ] = useState ( [ ] ) ;
18+
19+
20+
21+
1322 useEffect ( getRandomQuote , [ ] ) ;
1423
1524 function getRandomQuote ( ) {
@@ -18,13 +27,24 @@ function App() {
1827 . then ( data => setQuote ( data ) ) ;
1928 }
2029
30+ const searchQuote = ( ) => {
31+ fetch ( `https://afsha1-quote-server.glitch.me/quotes/search?term=${ keyword } ` )
32+ . then ( ( res ) => res . json ( ) )
33+ . then ( ( data ) => setSearchQuotes ( data ) ) ;
34+ console . log ( searchQuotes ) ;
35+ } ;
36+
2137 return (
2238 < div className = "App" >
2339 < header className = "App-header" >
24- < h1 > { quote . quote } </ h1 >
25- < h2 > { quote . author } </ h2 >
26- < Button getRandomQuote = { getRandomQuote } />
40+ < Quote quote = { quote } />
41+ < Button onClickHandler = { getRandomQuote } label = "Get Random Quote" />
42+ < Input className = "searchInput" type = "text" onChangeHandler = { setKeyword } placeholder = "Search" />
43+ < Button onClickHandler = { searchQuote } label = "Search Quote" />
2744 </ header >
45+ < >
46+ { searchQuotes . map ( ( searchQuote , index ) => ( < Quote key = { index } quote = { searchQuote } /> ) ) }
47+ </ >
2848 </ div >
2949 ) ;
3050}
0 commit comments