SearchResult.js 1.25 KB
Newer Older
Kim, Subin's avatar
Search    
Kim, Subin committed
1
2
3
4
5
6
import { useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
import queryString from 'query-string'
import MovieCard from "./MovieCard/index.js"
import movieApi from '../apis/movie.api.js'
import catchErrors from '../utils/catchErrors.js'
Kim, Subin's avatar
수빈    
Kim, Subin committed
7
8

const SearchResult = () => {
Kim, Subin's avatar
Search    
Kim, Subin committed
9
10
    const [result, setResult] = useState([])
    const [error, setError] = useState("")
Kim, Subin's avatar
수빈    
Kim, Subin committed
11
12
13
    const { search } = useLocation()
    const { title } = queryString.parse(search)

Kim, Subin's avatar
Search    
Kim, Subin committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    useEffect(() => {
        findforKeyword()
    }, [search])

    async function findforKeyword() {
        try {
            setError("")
            const data = await movieApi.search(title)
            setResult([...data])
        } catch (error) {
            catchErrors(error, setError)
        }
    }

    console.log("search==", search, "title==", title)
Kim, Subin's avatar
수빈    
Kim, Subin committed
29
30
    return (
        <>
Kim, Subin's avatar
Search    
Kim, Subin committed
31
32
33
34
35
36
            {result.length !== 0 ? (
                <>
                    <h3 className="text-white text-center my-5">'{title}'  관한 검색 결과입니다.</h3>
                    <MovieCard list={result} />
                </>
            ) : <h3 className="text-white text-center my-5">'{title}'  관한 검색 결과가 존재하지 않습니다.</h3>}
Kim, Subin's avatar
수빈    
Kim, Subin committed
37
38
39
40
41
        </>
    )
}

export default SearchResult