作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读一本 React 教程书。有一次,作者向我展示了如何构建一个简单的表单,效果很好。然后,他继续将其升级为“React Hook Form”。
按照说明一切正常,直到最后一行,他说以下内容。
“在 Header 组件的 JSX 中为 input 元素添加一个 ref 属性,并将其设置为 React Hook Form 中的 register 函数:
就在此时,我遇到了以下错误。
Type 'UseFormRegister<FormData>' is not assignable to type 'LegacyRef<HTMLInputElement> | undefined'.
Type 'UseFormRegister<FormData>' is not assignable to type '(instance: HTMLInputElement | null) => void'.
Types of parameters 'name' and 'instance' are incompatible.
Type 'HTMLInputElement | null' is not assignable to type '"search"'.
Type 'null' is not assignable to type '"search"'. TS2322
103 | <form onSubmit={handleSubmit}>
104 | <input
> 105 | ref={register}
| ^
106 | name="search"
107 | type="text"
108 | placeholder="Search..."
最终代码可在此位置获得 -
https://github.com/PacktPublishing/ASP.NET-Core-5-and-React-Second-Edition/blob/master/chapter-06/finish/frontend/src/Header.tsx
import React from 'react';
import { useSearchParams } from 'react-router-dom';
import { useForm } from 'react-hook-form';
type FormData = {
search: string;
};
export const Header = () => {
const { register } = useForm<FormData>();
const [searchParams] = useSearchParams();
const criteria = searchParams.get('criteria') || '';
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
};
return (
<div>
<form onSubmit={handleSubmit}>
<input
ref={register}
name="search"
type="text"
placeholder="Search..."
defaultValue={criteria}
/>
</form>
</div>
);
};
我仍在学习 React 和 TypeScript。我了解错误与类型不匹配有关。具体来说,“搜索”不能为空。但除此之外,我不知道如何解决这个问题。
最佳答案
这似乎是一个常见问题,并且已在链接的 github 问题部分中多次提出。没有提供完整的代码示例,所以在这里发布我自己的解决方案,以防万一,另一位读者像我一样被难住了。
<form onSubmit={handleSubmit}>
<input
{...register("search")} defaultValue={criteria}
placeholder="type here"
type="text"
/>
</form>
更多细节在这里 -
https://github.com/PacktPublishing/ASP.NET-Core-5-and-React-Second-Edition/issues/11
关于reactjs - React Hook Form 错误 - 类型 'UseFormRegister<FormData>' 不可分配给类型 'LegacyRef<HTMLInputElement> | undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67791756/
我正在尝试使用 useRef使用 TypeScript,但遇到了一些麻烦。 用我的 RefObject (我假设)我需要访问 current . (即 node.current) 我已经尝试了以下 c
我正在阅读一本 React 教程书。有一次,作者向我展示了如何构建一个简单的表单,效果很好。然后,他继续将其升级为“React Hook Form”。 按照说明一切正常,直到最后一行,他说以下内容。
我是一名优秀的程序员,十分优秀!