Estoy tratando de crear un selector de fecha. Cuando el usuario presiona el botón "Aceptar", el modal debería haberse cerrado pero sigue reabriendo. Estoy usando react-native-datetimepicker. Intenté poner setShow(false) cuando se presiona el botón "Aceptar", pero aún se abre por una fracción de segundo.
const [receiptDate, setReceiptDate] = React.useState(""); const [date, setDate] = React.useState(new Date()); const [today, setToday] = React.useState(new Date()); const [show, setShow] = React.useState(false); const onChange = (event, selectedDate) => { const currentDate = selectedDate || date; setDate(currentDate); if (event.type == "dismissed") { console.log("CANCEL") setShow(false) return null; } else { setShow(false) console.log("OK") let tempDate = new Date(currentDate); let fDate = tempDate.getFullYear() + "-" + tempDate.getDate() + "-" + (tempDate.getMonth() + 1) setReceiptDate(fDate); console.log(fDate); return; } } <View> <TouchableOpacity activeOpacity={0.9} onPress={() => setShow(true)}> <TextInput editable={false} placeholder="YYYY-MM-DD (2022-05-22)" value={receiptDate} /> </TouchableOpacity> {show && ( <DateTimePicker testID='dateTimePicker' value={date} mode={'date'} display='default' onChange={onChange} maximumDate={today} />)} </View>En mi opinión, no está configurando mostrar en falso, en caso de que el usuario seleccione una opción. Intente esto y avíseme si soluciona su problema o no:
const onChange = (event, selectedDate) => { if (event.type == 'set') { const currentDate = selectedDate || startDate; let tempDate = new Date(currentDate); let fDate = tempDate.getFullYear() + "-" + tempDate.getDate() + "-" + (tempDate.getMonth() + 1) setReceiptDate(fDate); setDate(currentDate); } setShow(false) }