frontend: initialize the date picker from its prop instead of an effect
Pedro Lucas Porcellis porcellis@eletrotupi.com · 12 days ago
6b0e21c082d83d67530667a986f1cd80d982458e Browse filesParents
bb83acfChanged files
1
Additions
+4
Deletions
-6
frontend/components/ui/DatePickerField.tsx
1 -
import { useState, useEffect } from "react";
1 +
import { useState } from "react";
2 2
import { View, Pressable, StyleSheet } from "react-native";
3 3
import { Text } from "@/components/ui/Text";
4 4
import DateTimePicker, {
5 5
DateTimePickerEvent,
6 6
} from "@react-native-community/datetimepicker";
22 22
initialDate = new Date(),
23 23
onChange,
24 24
minimumDate,
25 25
maximumDate,
26 26
}) => {
27 -
const [date, setDate] = useState(initialDate);
27 +
const [pickedDate, setPickedDate] = useState<Date | null>(null);
28 28
const [show, setShow] = useState(false);
29 29
30 -
useEffect(() => {
31 -
setDate(initialDate);
32 -
}, [initialDate]);
30 +
const date = pickedDate ?? initialDate;
33 31
34 32
const openPicker = () => setShow(true);
35 33
36 34
const handleChange = (event: DateTimePickerEvent, selectedDate?: Date) => {
37 35
setShow(false);
38 36
39 37
if (selectedDate) {
40 -
setDate(selectedDate);
38 +
setPickedDate(selectedDate);
41 39
if (onChange) onChange(selectedDate);
42 40
}
43 41
};
44 42
45 43
const formatted = format(date, "dd/MM/yyyy");
98 96
color: "#111827",
99 97
fontSize: 16,
100 98
fontWeight: "600",
101 99
},
102 100
});