Проблема:
formRef.current.setFieldValue('birthday',value)
это попытается установить значение для предоставленного path
, в нашем случае предоставленный путь - props.selected
.
И props.selected
- свойство только для чтения, поэтому вы не можете установить значение для props
, отсюда и ошибка.
useEffect(() => {
registerField({
name: fieldName,
ref: datepickerRef.current,
path: 'props.selected', // <---- this is props, and it's readonly
clearValue: (ref) => {
ref.clear();
},
});
}, [fieldName, registerField]);
Решение:
Вы можете удалите path
и используйте методы getter
и setter
с именами getValue
и setValue
:
setValue
: для установки начального значения или того, что передано из setFieldValue
getValue
: для получения значения при отправке
useEffect(() => {
registerField({
name: fieldName,
ref: datepickerRef.current,
clearValue: ref => {
ref.clear();
},
setValue: (e, v) => {
setDate(new Date(v)); // <---- Setting up default value
},
getValue: () => {
return datepickerRef.current.props.selected; // to get selected value from Date picker's props
// OR
return Date.toString(); // to get selected value from state it self
}
});
}, [fieldName, registerField]);
РАБОЧАЯ ДЕМО :