import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useLocation } from 'react-router-dom'; import ModalMovieDetails from '../components/ModalMovieDetails'; import Modal from '../components/UI/Modal'; import { useDebounce } from '../hooks/useDebounce'; import * as movieActions from '../store/actions'; // A custom hook that builds on useLocation to parse // the query string for you. const useQuery = () => { return new URLSearchParams(useLocation().search); }; const Search = () => { let query = useQuery(); const debouncedSearchTerm = useDebounce(query.get('q'), 500); const [isToggleModal, setIsToggleModal] = useState(false); const { searchResults, isLoading } = useSelector( (state) => state.searchMovie ); const { movieDetails } = useSelector((state) => state.movieDetails); const dispatch = useDispatch(); useEffect(() => { if (debouncedSearchTerm) { dispatch(movieActions.fetchSearchMovie(debouncedSearchTerm)); } }, [debouncedSearchTerm]); const onCloseModalHandler = () => { setIsToggleModal(false); }; const onSelectMovieHandler = (movie) => { dispatch(movieActions.fetchMovieDetails(movie.media_type, movie.id)); setIsToggleModal(true); }; const renderSearchResults = () => { return searchResults.length > 0 ? ( <>
Your search for "{debouncedSearchTerm}" did not have any matches.
Suggestions: