'use client' import { useState, useEffect } from 'react' import Link from 'next/link' import { Icons, DiscountProduct, ProductPrice, EmptySearchList, ShowWrapper, Modal, ResponsiveImage, } from 'components' import { truncate } from 'utils' import { useGetProductsQuery } from '@/store/services' import { useDebounce } from 'hooks' const SearchModal = props => { //? Props const { isShow, onClose } = props //? States const [search, setSearch] = useState('') //? Assets const debouncedSearch = useDebounce(search, 1200) //? Search Products Query const { data, isSuccess, isFetching, error, isError, refetch } = useGetProductsQuery( { search, }, { skip: !Boolean(debouncedSearch) || search !== debouncedSearch } ) //? Re-Renders //* Reset Search useEffect(() => { if (!isShow) { setSearch('') } }, [isShow]) //? Handlers const handleChange = e => { setSearch(e.target.value) } const handleRemoveSearch = () => { setSearch('') } //? Render(s) return ( 搜索
} >
{data?.data?.productsLength && data?.data.productsLength > 0 && search.length > 0 && data?.data?.products.map(item => (
onClose()}> {truncate(item.title, 70)}
{item.discount > 0 && }
))}
) } export default SearchModal