我正在尝试在react-datepicker组件中实现限制或验证。我正在使用 redux-form 进行验证和规范化(实现限制)
https://redux-form.com/6.0.0-rc.1/examples/normalizing/
问题:我观察到,当我们尝试在字段中输入内容时,不会调用 redux-form 的规范化函数和验证函数
虽然我们提交表单时未提交此值,但我需要显示一些验证错误或限制用户输入无效字符。
我为日期选择器组件制作了一个包装器,并通过 redux 字段在我的表单中使用它
我的日期选择器组件:-
return (
<div className={"render-date-picker "}>
<div className="input-error-wrapper">
{(input.value) ? <label> {placeholder} </label> : ''}
<DatePicker className="input form-flow" {...input}
placeholderText={placeholder}
selected={input.value ? moment(input.value) : null}
maxDate={maxDate || null}
minDate={minDate || null}
dateFormat={isTimePicker ? "LLL" : "DD/MM/YYYY"}
showYearDropdown
showMonthDropdown
disabledKeyboardNavigation
/>
{touched && error && <span className="error-msg">{t(error)}</span>}
<span className="bar" style={{ 'display': this.state.is_focus ? 'block' : 'none' }} ></span>
</div>
</div>
);
redux 表单字段:-
<Field
name="date_of_birth"
type="text"
className="input form-flow extra-padding-datepicker"
component={RenderDatePicker}
maxDate={moment().subtract(18, "years")}
validate={[required, dateOfBirth]}
normalize={isValidDateFormat}
placeholder={t("DOB (DD/MM/YYYY)")}
/>
我的标准化功能:-
export const isValidDateFormat = (value, previousValue) => {
if (value == null || !value.isValid()) {
return previousValue;
}
return value;
}