1
- import { ChangeEvent , ChangeEventHandler , useEffect , useState } from 'react' ;
1
+ import { ChangeEvent , ChangeEventHandler , useState } from 'react' ;
2
2
3
3
import dayjs from 'dayjs' ;
4
4
5
5
import { DATE_FORMAT } from '@/components/DayPicker/constants' ;
6
6
import { parseInputToDate } from '@/components/DayPicker/parseInputToDate' ;
7
+ import { useValueHasChanged } from '@/hooks/useValueHasChanged' ;
7
8
8
9
type UseDayPickerInputManagement = {
9
10
inputValue : string ;
@@ -27,19 +28,12 @@ export const useDayPickerInputManagement = (
27
28
) ;
28
29
29
30
const dateValueAsDayjs = dayjs ( dateValue ) ;
31
+ const dateFormatHasChanged = useValueHasChanged ( dateFormat ) ;
32
+ const dateValueHasChanged = useValueHasChanged ( dateValue ) ;
30
33
31
- // Pour mettre à jour l'input selon la value
32
- useEffect ( ( ) => {
33
- if ( ! ! dateValue ) {
34
- // TODO @eslint -react rule
35
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
36
- setInputValue ( dayjs ( dateValue ) . format ( dateFormat ) ) ;
37
- } else {
38
- // TODO @eslint -react rule
39
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
40
- setInputValue ( '' ) ;
41
- }
42
- } , [ dateFormat , dateValue ] ) ;
34
+ if ( dateFormatHasChanged || dateValueHasChanged ) {
35
+ setInputValue ( dateValue ? dayjs ( dateValue ) . format ( dateFormat ) : '' ) ;
36
+ }
43
37
44
38
const handleInputChange : ChangeEventHandler < HTMLInputElement > = ( e ) => {
45
39
setInputValue ( e . currentTarget . value ) ;
0 commit comments