У меня есть форма, содержащая 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
без ломать все? Если это возможно, как это должно быть реализовано?