eletrotupi / tcc/ commit / 6b0e21c

frontend: initialize the date picker from its prop instead of an effect

Pedro Lucas Porcellis porcellis@eletrotupi.com · 12 days ago 6b0e21c082d83d67530667a986f1cd80d982458e Browse files
Parents bb83acf
Changed 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
});