React.js

[React] Ant Design DatePicker(RangePicker)와 Moment.js를 사용한 날짜별 필터링 기능 구현

Chunho 2022. 9. 29. 16:10

Ant-Design을 사용하여 Admin Page를 개발하는 중, Ant Design에서 제공하는 DatePicker를 사용하여 날짜별 데이터 필터링 기능을 구현하였다. 

 

우선 데이터를 날짜별로 필터링 하기 위해서는 API 에 GET요청을 보낼 때 query에 startDate, endDate를 String(YYYY-MM-DD) 형식으로 담아서 보내주면 됐다. 

먼저 시작일과 종료일을 한 번에 받으려면, Antd가 제공하는 RangePicker를 사용해주면 된다.

 

 const {RangePicker} = DatePicker

DatePicker를 먼저 import 해준 뒤, DatePicker가 제공하는 RangePicker를 꺼내 사용한다.

 

 <RangePicker onCalendarChange={handleChange} />
        <Button type="primary" icon={<SearchOutlined />} style={{marginLeft: '10px'}} onClick={handleSubmit}>
          Search
        </Button>

위와 같이 날짜 조회 버튼과 제출 버튼을 생성해줄 수 있다. onCalendarChange에 함수를 걸어주면 함수의 파라미터로 Moment 객체를 받을 수 있다. 

 

  const handleChange = useCallback((e: any) => {
    if (e) {
      setStartDate(moment(e[0]).format('YYYY-MM-DD'))
      setEndDate(moment(e[1]).format('YYYY-MM-DD'))
    } else {
      setStartDate(undefined)
      setEndDate(undefined)
    }
  }, [])

이후 나는 momentJS를 사용하여 받은 Moment 객체를 API query 양식에 맞게 변경해주었다. \

 

handleSubmit 함수에서는 navigate로 쿼리를 주어 날짜별 필터링 기능을 구현할 수 있었다.