#reactjs #antd #react-hook-form
#reactjs #antd #форма перехвата реакции
Вопрос:
В настоящее время у меня есть react-hook-form
управляемая форма, в которую я добавил antd
RangePicker
. У меня возникли проблемы с обновлениями RangePicker
, которые передаются объекту формы. В настоящее время значения по умолчанию передаются нормально, но никаких изменений не происходит.
OnChange
события, похоже, обрабатываются стандартным Controller
методом с другими типами полей ( Input
и т.д.). Я предполагаю, что мне нужно написать здесь что-то нестандартное, но я не уверен. Заранее спасибо за любую помощь.
Вот мой текущий antd
DatePicker
, который управляется с react-hook-forms
Controller
помощью метода.
РЕДАКТИРОВАТЬ: обновил мой код, чтобы использовать render
метод в форме react-hook-form v6 в отличие от as
метода. Я также заметил, что если я не передаю какое-либо значение по умолчанию, то RangePicker принимает и передает как начальную, так и конечную даты нормально. Но когда я устанавливаю значение по умолчанию, оно всегда дважды возвращает начальную дату по умолчанию.
<Controller
name="materialarrivalpickup"
control={control}
defaultValue={[
moment(user.project.projectmaterialarrival),
moment(user.project.projectmaterialpickup),
]}
rules={{ required: true }}
render={(props) => (
<RangePicker
{...props}
format="MM/DD/YYYY"
onChange={(e) => {
props.onChange(e);
console.log("Range Picker " e);
}}
/>
)}
/>
Ответ №1:
Понял это. По-видимому, react-hook-form
правильно передавал RangePicker
изменения в мой объект формы, который я просто не мог определить на основе журнала.
Когда я обновляю средство выбора, объект Moment (две даты) не выглядел обновленным в журнале, созданном react-hook-form
watch()
(оба выглядят так, как будто они 3/3/2020).
Но когда я разворачиваю объект Moment, я получаю обновленные даты (3/3/2020 и 3/5/2020).
Я оставлю свой рабочий RangePicker
react-hook-form
код здесь для всех, кому он нужен.
<Controller
name="materialarrivalpickup"
style={{ marginBottom: "8px" }}
control={control}
defaultValue={[
moment(user.project.projectmaterialarrival),
moment(user.project.projectmaterialpickup),
]}
rules={{ required: true }}
render={(props) => (
<RangePicker
{...props}
format="MM/DD/YYYY"
onChange={(e) => {
props.onChange(e);
console.log("Range Picker: " e);
}}
/>
)}
/>