Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import { FC, useEffect, useState } from 'react'; import { SearchItemResponse, SearchItemsResponse } from '../../models/searchItemResponse'; import { ErrorResponse } from '../../models/errorResponse'; import { ErrorResult } from '..'; import SearchItemResult from './SearchItemResult'; import { useSortSearchItem } from '../../hooks/useSortSearchItem'; import styled from 'styled-components'; type Props = { result: SearchItemsResponse | ErrorResponse; isRent: boolean; }; const StyledLi = styled.li` margin: 0; padding: 0; list-style: none; `; const StyledUl = styled.ul` margin: 60px 0 100px 0; padding: 0; `; const SearchItemResultList: FC<Props> = (props) => { const [result, useResult] = useState<SearchItemsResponse | ErrorResponse>(props.result); useEffect(() => { if (!('code' in props.result && 'message' in props.result)) { useResult(useSortSearchItem(props.result)); } }, [props.result]); return 'code' in result && 'message' in result ? ( <ErrorResult result={result} /> ) : ( <StyledUl> {result.search_items.map((item: SearchItemResponse, index: number) => ( <StyledLi key={index}> {props.isRent ? ( <> {/* props.isRent === true のときだけフィルターする */} {item.is_rent ? <></> : <SearchItemResult item={item} />} </> ) : ( <SearchItemResult item={item} /> )} </StyledLi> ))} </StyledUl> ); }; export default SearchItemResultList; |