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

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

Kim, Subin's avatar
Search    
Kim, Subin committed
15
16
    useEffect(() => {
        findforKeyword()
17
    }, [title])
Kim, Subin's avatar
Search    
Kim, Subin committed
18
19
20
21

    async function findforKeyword() {
        try {
            setError("")
22
23
            const res = await movieApi.search({ type: "home", keyword: title })
            setResult(res)
Kim, Subin's avatar
Search    
Kim, Subin committed
24
25
26
27
28
        } catch (error) {
            catchErrors(error, setError)
        }
    }

Kim, Subin's avatar
수빈    
Kim, Subin committed
29
    return (
Jiwon Yoon's avatar
Jiwon Yoon committed
30
        <div className="container">
Kim, Subin's avatar
Search    
Kim, Subin committed
31
32
33
            {result.length !== 0 ? (
                <>
                    <h3 className="text-white text-center my-5">'{title}'  관한 검색 결과입니다.</h3>
Kim, Subin's avatar
Kim, Subin committed
34
35
36
                    <div className="row row-cols-1 row-cols-md-4 g-4">
                        <MovieCard list={result} />
                    </div>
Kim, Subin's avatar
Search    
Kim, Subin committed
37
                </>
38
            ) : <h3 className="text-white text-center my-5 vh-100" style={{ wordBreak: "keep-all" }}>'{title}'  관한 검색 결과가 존재하지 않습니다.</h3>
Kim, Subin's avatar
Kim, Subin committed
39
            }
Jiwon Yoon's avatar
Jiwon Yoon committed
40
        </div>
Kim, Subin's avatar
수빈    
Kim, Subin committed
41
42
43
44
    )
}

export default SearchResult