File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change 1+ import React , { useEffect , useState } from 'react' ;
2+
3+ const TaskSearch = ( ) => {
4+ const [ tasks , setTasks ] = useState ( [ ] ) ;
5+ const [ loading , setLoading ] = useState ( true ) ;
6+ const [ error , setError ] = useState ( null ) ;
7+ const [ searchQuery , setSearchQuery ] = useState ( '' ) ;
8+
9+ useEffect ( ( ) => {
10+ setLoading ( true ) ;
11+ fetch ( `/search?query=${ encodeURIComponent ( searchQuery ) } ` )
12+ . then ( response => {
13+ if ( ! response . ok ) {
14+ throw new Error ( 'Network response was not ok' ) ;
15+ }
16+ return response . json ( ) ;
17+ } )
18+ . then ( data => {
19+ setTasks ( data ) ;
20+ setLoading ( false ) ;
21+ } )
22+ . catch ( error => {
23+ setError ( error . message ) ;
24+ setLoading ( false ) ;
25+ } ) ;
26+ } , [ searchQuery ] ) ; // Depend on searchQuery
27+
28+ if ( loading ) {
29+ return < div > Loading...</ div > ;
30+ }
31+
32+ if ( error ) {
33+ return < div > Error: { error } </ div > ;
34+ }
35+
36+ return (
37+ < div >
38+ < h2 > Task Search</ h2 >
39+ < input
40+ type = "text"
41+ placeholder = "Search tasks..."
42+ value = { searchQuery }
43+ onChange = { ( e ) => setSearchQuery ( e . target . value ) }
44+ />
45+ < ul >
46+ { tasks . map ( task => (
47+ < li key = { task . id } >
48+ < p > { task . description } </ p >
49+ </ li >
50+ ) ) }
51+ </ ul >
52+ </ div >
53+ ) ;
54+ } ;
55+
56+ export default TaskSearch ;
You can’t perform that action at this time.
0 commit comments