728x90
meterial ui datetimepicker 값 설정시 유의점
개인적으로 프로젝트 진행시 reactjs + mui 조합을 가장 많이 사용합니다. 익숙한 이유도 크지만, 기능 추가 등의 지원이 mui를 사용하는 가장 큰 이유 입니다.
mui 4.X에서는 beta 버젼으로 제공 되었고 오류를 꽤 가지고 있었지만, mui-x 5.x에서는 좀 더 안정된 datepicker를 제공(22.06.24 기준 5.0.0-alpha.6) 하기 시작했습니다.
mui-x 5.x 컴포넌트 중 datetimepicker를 사용할때 유의 사항을 작성하여 봅니다.
datetimepicker의 value는 any 타입을 받아서 처리 할 수 있습니다. 하지만 문자열로 설정하면 값이 화면에 안그려지거나, 갱신이 안되는 경우가 발생합니다.
빈 값을 설정하기위해서는 꼭 null로 설정해야 합니다.
const [strtDate, setStrtDate] = React.useState<Date | string | null>(null);
React.useEffect(() => {
if (data.strtRsvtDtm)
setStrtDate((_) => parse(data.strtRsvtDtm, "yyyyMMddHHmmss", new Date()));
else setStrtDate(null);
}, [data]);
return (<DateTimePicker
label="Delevery date"
value={strtDate}
onChange={(newValue, keyboardInputValue) => {
let result = keyboardInputValue;
if (newValue && newValue.toString() !== "Invalid Date") {
result = format(new Date(newValue), "yyyyMMddHHmmss");
}
setData({ ...data, strtRsvtDtm: result ?? "" });
// 화면에 갱신 문제로 이렇게 처리 해야함... :(
setStrtDate(newValue);
}}
// minDate={parse(endDate, 'yyyyMMdd', new Date())}
inputFormat="yyyy-MM-dd HH:mm:ss"
mask="____-__-__ __:__:__"
disableOpenPicker={false}
ampm={false}
renderInput={(dProps) => (
<TextField
{...dProps}
variant="outlined"
sx=
{...makeErrorProps(errorState, "strtRsvtDtm")}
/>
)}
/>)
전체 DateTimePicker 소스 바로 가기
이전에 몇번 경험했던 일인데, 매번 잊어버려서 작성하게 되었습니다. :)
'HTML + JAVASCRIPT + CSS > ReactJS+AngularJS +VueJS' 카테고리의 다른 글
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. (0) | 2021.12.23 |
---|---|
클립보드의 이미지를 업로드 후 화면 표기 처리 (0) | 2021.12.17 |
reactjs 합성 사용하기 (0) | 2021.07.09 |
tailwindcss with ReactJS (0) | 2021.02.21 |
JSON 데이터를 xlxs 형식으로 다운로드 하기 by ReactJS (0) | 2021.02.19 |