У меня есть форма, которая содержит KeyboardDatePicker
из material UI
, и я хочу, чтобы она имела пустое строковое значение (""
) в качестве значения по умолчанию, когда значение не передается в хук useForm
для этого поля.
Вот моя реализация до сих пор:
Поле ввода выбора даты:
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<Controller
name="date"
control={control}
rules={{ required: true }}
defaultValue={getValues().date || ""}
as={
<KeyboardDatePicker
autoOk
inputVariant="outlined"
format="yyyy-MM-dd"
margin="normal"
id="date-picker-inline"
label="Date"
placeholder="yyyy-mm-dd"
required
error={!!errors.date}
helperText={errors.date && "Incorrect entry."}
onChange={() => {}}
value={() => {}}
KeyboardButtonProps={{
"aria-label": "change date",
}}
/>
}
/>
</MuiPickersUtilsProvider>
А вот мой крючок для формы:
const { handleSubmit, getValues, control, register, errors, setValue } = useForm<Project>({
submitFocusError: false,
mode: "onBlur",
defaultValues: project,
});
Я устанавливаю значения по умолчанию для моей формы с помощью project
, но project
может быть null or undefined
, а свойство date
project
также может быть null
. Если это так, я хочу, чтобы значение по умолчанию было пустой строкой.
К сожалению, с этой реализацией, когда я выбираю дату из пустого поля в Date
, я получаю предупреждение о том, что мне не следует менять неконтролируемый ввод текста на контролируемый и label
входного стека над значением:
Возможно ли вообще иметь пустую строку в качестве значения по умолчанию для DatePicker
, не нарушая всего? Если это возможно, как это должно быть реализовано?