Компонент не имеет ошибок, но в индексном файле, где я фактически вызываю компонент ввода, есть ошибка, потому что он не может использовать register = {register}.
Чего не хватает? Или что не так?
Компонент не имеет ошибок, но в индексном файле, где я фактически вызываю компонент ввода, есть ошибка, потому что он не может использовать register = {register}.
Чего не хватает? Или что не так?
ОК, вот проблемы:
register
к реквизитам в объявлении реквизитов входного компонентаregister
, переданный в качестве опоры, а не новый, созданный с помощью useForm
в компоненте вводавот рабочий <Input>
компонент с комментариями:
import React, { InputHTMLAttributes } from "react";
//import { useForm } from "react-hook-form"; // don't need the import
interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
id: string;
label: string;
register: any; // declare register props
}
const Input: React.FC<InputProps> = ({ id, label, register, ...rest }) => {
//const { register } = useForm(); // don't use a new `register`, use the one from props
return (
<div className="input-block">
<label htmlFor={id}>{label}</label>
<br />
<br />
{/* you must declare the `name` attribute on the input element */}
<input name={id} type="text" id={id} ref={register} {...rest} />
</div>
);
};
export default Input;
Я нашел статью, которая помогла мне найти решение.
У Codebox есть подходящее решение для тех, кто хочет использовать компонентность машинописного текста с помощью React Hook Form.
https://codesandbox.io/s/react-hook-form-typescript-xnb1u