Ниже приведены два файла, которые являются inputForm.js и TextFiled.js. Здесь TextField.js является отдельным компонентом реакции, и я не хочу ничего менять на это.
Вот здесь inputForm.jsфайлы. Здесь я хочу проверить введенный символ и проверить, если длина больше 8, тогда под текстовым вводом должно быть какое-то сообщение об ошибке.
import TextField from "./TextField";
const required = value => (value ? undefined : "Required");
const exactLength = length => value => {
//alert(value)
return value && value.length !== length ? `Must be ${length} exact 6` : undefined;
}
const exact6 = exactLength(6);
<h2>Field-Level Validation</h2>
<TextField
labelName="Cost"
placeholder="Cost"
name="cost"
onValidate={[required, exact6]}
/>
TextField.js
import React from "react";
import { Field, reduxForm } from "redux-form";
const Input = props => {
const {
disabled,
labelName,
placeholder,
onValidate,
input: { name, onBlur, onChange, onFocus, value },
meta: { error, touched, visited }
} = props;
const showError = (visited || touched || onValidate) && error;
return (
<div className={FormStyles.inputWrapper}>
<label className={FormStyles.formLabel}>{labelName}</label>
<input
className="form-input"
disabled={disabled}
name={name}
onBlur={onBlur}
onChange={onChange}
onFocus={onFocus}
placeholder={placeholder}
value={value}
/>
{showError && <div className="note note-error">{error}</div>}
</div>
);
};
const TextField = props => <Field {...props} validate={props.onValidate} component={Input} />;
export default reduxForm({
form: "fieldLevelValidation" // a unique identifier for this form
})(TextField);