MUI X <DateTimePicker>
시작하기
컴포넌트 구조
이런 형태로 날짜와 시간을 선택할 수 있는 input을 만들기 위해 MUI X 공식문서에서 보고 세팅을 해봤다.
import * as React from 'react';
import TextField from '@mui/material/TextField';
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
export default function ResponsiveDateTimePickers() {
const [value, setValue] = React.useState(new Date('2018-01-01T00:00:00.000Z'));
return (
<LocalizationProvider dateAdapter={AdapterDateFns}>
<DateTimePicker
label="Responsive"
renderInput={(params) => <TextField {...params} />}
value={value}
onChange={(newValue) => {
setValue(newValue);
}}
/>
</LocalizationProvider>
);
}
https://mui.com/x/react-date-pickers/date-time-picker/ 에서 긁어온 코드인데, <DateTimePicker/> 컴포넌트를 import 해서 사용하기 위해 mui 라이브러리(@mui/x-date-pickers)를 추가로 깔아야 했다. 그런데 다른 mui 컴포넌트들처럼 그냥 DateTimePicker만 가져와서 쓴다고 작동하는 것은 아니고, LocalizationProvider와 AdapterDateFns도 필요했다. 위 코드의 모양대로 DateTimePicker를 LocalizationProvider로 감싸고, dateAdapter props로 AdapterDateFns를 전달해야 한다.
라이브러리 설치
yarn add @mui/x-date-pickers
이 라이브러리를 설치해서 import 하면 된다.
그런데 브라우저에 렌더링되지 않고 에러가 떠서 찾아보니 AdapterDateFns는 @mui/x-date-pickers에서 그냥 임포트한다고 온전히 사용할 수 있는 게 아닌가보다.
// date-fns
npm install @date-io/date-fns
// or for Day.js
npm install @date-io/dayjs
// or for Luxon
npm install @date-io/luxon
// or for Moment.js
npm install @date-io/moment
https://mui.com/x/react-date-pickers/getting-started/(date-pickers 사용하기 위한 setting)를 보면, 날짜를 다룰 수 있게 위와 같이 네 개의 라이브러리 중 하나를 설치해야 한다고 안내한다. 가장 위의 @date-io/date-fns가 잘 쓰이는 것 같아서 설치했다.
yarn add @date-io/date-fns
문제 해결
Uncaught Error: Cannot find module 'date-fns/addDays' ...
Module not found can't resolve 'date-fns/addDays' ...
그런데!!! 여전히 오류가 심하게 나왔다. 위 에러 문구가 addDays를 비롯해 date-fns 라이브러리 안의 시, 분, 초, 날짜 모든 항목에 대해 쭈욱 떴다ㅠㅠ
그래서 구글링해보니 https://bobbyhadz.com/blog/react-module-not-found-cant-resolve-date-io-date-fns 이 글에서 내가 라이브러리 설치한 것과 다른 코드를 제시했다.
yarn add @date-io/date-fns date-fns
date-fns가 추가되어있다. 그래서 이 코드로 한번 더 설치했더니 모든 에러가 사라지고 돌아간다!!!
'TIL' 카테고리의 다른 글
Recoil (0) | 2022.08.09 |
---|---|
[TIL-189] 모던 자바스크립트 - 46장 제너레이터와 async/await (0) | 2022.06.15 |
[TIL-187] MyView 프로젝트 - React props로 컴포넌트 전달 & text-transform (0) | 2022.06.05 |
[TIL-186] 모던 자바스크립트 - 32~33, 38장 브라우저의 렌더링 과정 (0) | 2022.06.03 |
[TIL-185] MyView 프로젝트 - JSX와 Javascript (0) | 2022.05.31 |