개발/react

[React] day.js를 활용하여 동적인 연도 Select 생성하기

JH._.kim 2024. 12. 27. 20:21
import React, { useState, useEffect, useMemo } from 'react';
import { useForm, Controller } from 'react-hook-form';
import dayjs from 'dayjs';

const YearSelect = () => {
    const { control } = useForm({
        defaultValues: {
        	year: defaultValue
        }
    });
    
    const yearOptions = useMemo(() => {
        const currentYear = dayjs().year();
        const startYear = 2024;
        const years = [];

        for (let year = currentYear; year >= startYear; year--) {
          years.push({ label: `${year}년`, value: year.toString() });
        }

        return years;
    }, []);
      
    return (
        <form>
            <Controller
            control={control}
            name="year"
            render={({ field }) => (
                    <Select 
                        {...field} 
                        options={yearOptions} 
                        label="연도별"
                        onChange={(value) => {
                            field.onChange(value);
                        }}
                    />
                )}
            />
        </form>
    )
}

export default YearSelect;

 

2024년부터 시작해서 해가 바뀔 때 마다 그 새해의 연도가 동적으로 생성되도록 하는 연도 셀렉트 컴포넌트를 만들어야 했다.

day.js를 활용하여 현재 연도를 불러오고, 동적인 연도 범위를 설정했다.

그리고 React Hook Form을 사용하여 폼 상태를 관리하고, 기본값 설정이 가능하도록 했다.

 

728x90