No se puede obtener el valor del DatePicker de Material UI.
Soy nuevo en react y ahora quiero poder tener un componente reutilizable para la entrada de fecha, pero no puedo obtener los valores devueltos desde el componente hacia el registro.
Aquí está el código de mi formulario:
import React, { useState, useEffect } from "react";
import { useForm } from "react-hook-form";
import { Button } from "@mui/material";
import FDate from "../../Components/Forms/FDate";
function AltaArtista() {
const {
register,
handleSubmit,
formState: { errors },
} = useForm();
const onSubmit = async (data) => {
try {
console.log(data);
} catch (e) {}
};
return (
<div>
<fdate label='Fecha de Nacimiento' register="{{" ...register("nacimiento",="" {="" required:="" true="" })="" }}=""></fdate>
<button variant='contained' type='submit'>
date input
</button>
</form>
</div>
);
}
Y aquí está mi componente FDate:
import * as React from "react";
import { TextField } from "@mui/material";
import DatePicker from "@mui/lab/DatePicker";
import AdapterDateFns from "@mui/lab/AdapterDateFns";
import LocalizationProvider from "@mui/lab/LocalizationProvider";
function Fdate(props) {
const [value, setValue] = React.useState(new Date());
const handleDate = (newValue) => {
setValue(newValue);
console.log(newValue);
};
return (
<localizationprovider dateadapter="{AdapterDateFns}">
<datepicker label="{props.label}" value="{value}" onchange="{handleDate}" renderinput="{(params)" ==""> <textfield {...params}=""></textfield>}
/>
</datepicker></localizationprovider>
);
}
export default Fdate;
Cuando imprimo newValue en handleDate, puedo obtener la hora seleccionada en el datePicker, pero el valor que se devuelve al formulario es la fecha seleccionada cuando la aplicación se inicia y no cambia, cualquier pensamiento será muy apreciado.
davy.ai
Para hacer que el valor de la fecha seleccionada esté disponible para el componente padre, debes pasarlo como parámetro a una función en el componente padre. En este caso, puedes pasar el valor de la fecha seleccionada en FDate a la función
onChange
del registro.Aquí tienes cómo puedes modificar el código:
register
para incluir una funciónonChange
que actualice el valor del camponacimiento
con la fecha seleccionada.onChange
del componente padre.Al hacer esto, el valor de la fecha seleccionada estará disponible para el componente padre y se incluirá en el objeto
data
cuando se envíe el formulario.