1+ import { useEffect , useState , useMemo , useCallback , memo } from 'react' ;
12import {
23 useAdminSalesTicketList ,
34 useAdminTicketList ,
67 useShowEnteranceSummary ,
78} from '@boolti/api' ;
89import { ClearIcon , SearchIcon } from '@boolti/icon' ;
9- import { useEffect , useState } from 'react' ;
1010import { useParams } from 'react-router-dom' ;
1111
1212import EnteranceTable from '~/components/EnteranceTable' ;
@@ -45,14 +45,18 @@ const ShowEnterancePage = () => {
4545 const { data : salesTicketList = [ ] } = useAdminSalesTicketList ( showId ) ;
4646
4747 const [ selectedTicketId , setSelectedTicketId ] = useState < string [ ] > ( [ ] ) ;
48- const options = salesTicketList . map ( ( ticket ) => ( {
49- value : ticket . id . toString ( ) ,
50- label : ticket . ticketName ,
51- } ) ) ;
48+ const options = useMemo (
49+ ( ) =>
50+ salesTicketList . map ( ( ticket ) => ( {
51+ value : ticket . id . toString ( ) ,
52+ label : ticket . ticketName ,
53+ } ) ) ,
54+ [ salesTicketList ] ,
55+ ) ;
5256 const { data : ticketList , isLoading : isTicketListLoading } = useAdminTicketList (
5357 showId ,
5458 currentPage ,
55- searchText ,
59+ debouncedSearchText ,
5660 selectedTicketId ,
5761 useTicketUsedFilter ,
5862 ) ;
@@ -62,14 +66,19 @@ const ShowEnterancePage = () => {
6266 const isMobile = deviceWidth < parseInt ( theme . breakpoint . mobile , 10 ) ;
6367
6468 const totalPages = ticketList ?. totalPages ?? 0 ;
65- const tickets = ( ticketList ?. content ?? [ ] ) . filter (
66- ( { usedAt } ) => useTicketUsedFilter === undefined || ! ! usedAt === useTicketUsedFilter ,
69+
70+ const tickets = useMemo (
71+ ( ) =>
72+ ( ticketList ?. content ?? [ ] ) . filter (
73+ ( { usedAt } ) => useTicketUsedFilter === undefined || ! ! usedAt === useTicketUsedFilter ,
74+ ) ,
75+ [ ticketList , useTicketUsedFilter ] ,
6776 ) ;
6877
69- const onClickReset = ( ) => {
78+ const onClickReset = useCallback ( ( ) => {
7079 setSelectedTicketId ( [ ] ) ;
7180 setSearchText ( '' ) ;
72- } ;
81+ } , [ ] ) ;
7382
7483 useEffect ( ( ) => {
7584 const timerId = setTimeout ( ( ) => {
@@ -174,9 +183,7 @@ const ShowEnterancePage = () => {
174183 < Styled . InputContainer >
175184 < Styled . Input
176185 value = { searchText }
177- onChange = { ( event ) => {
178- setSearchText ( event . target . value ) ;
179- } }
186+ onChange = { ( event ) => setSearchText ( event . target . value ) }
180187 placeholder = { isMobile ? '방문자명, 연락처' : '방문자명, 연락처 검색' }
181188 />
182189 < Styled . ButtonContainer >
@@ -231,4 +238,4 @@ const ShowEnterancePage = () => {
231238 ) ;
232239} ;
233240
234- export default ShowEnterancePage ;
241+ export default memo ( ShowEnterancePage ) ;
0 commit comments