Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 类型为'的参数;字符串';不可分配给类型为'`${string}``{string}.${string}`{string}.${number}`';_Reactjs_Typescript_React Hook Form - Fatal编程技术网

Reactjs 类型为'的参数;字符串';不可分配给类型为'`${string}``{string}.${string}`{string}.${number}`';

Reactjs 类型为'的参数;字符串';不可分配给类型为'`${string}``{string}.${string}`{string}.${number}`';,reactjs,typescript,react-hook-form,Reactjs,Typescript,React Hook Form,我已将react hook表单从第6版迁移到第7版 更改寄存器方法后,如中所述,出现以下错误: “string”类型的参数不能分配给“${string}{code>${string}.${string}{code>${string}.${number}”类型的参数。TS2345 Register需要一个字符串名,我正确地提供了一个param,这个param肯定是一个字符串,但无论如何,如果我没有准确地传递string,它不会接受我的参数 任何有类似问题或想法的人都将受到高度赞赏。提前谢谢 在re

我已将
react hook表单
从第6版迁移到第7版

更改
寄存器
方法后,如中所述,出现以下错误:

“string”类型的参数不能分配给“
${string}
{code>${string}.${string}{code>${string}.${number}”类型的参数。TS2345

Register需要一个字符串名,我正确地提供了一个param,这个param肯定是一个字符串,但无论如何,如果我没有准确地传递string,它不会接受我的参数

任何有类似问题或想法的人都将受到高度赞赏。提前谢谢

react hook表单中
v7不接受字符串,但接受字符串。这是
寄存器的定义:

导出声明类型UseFormRegister=<
TFieldName扩展字段路径=字段路径
>(
姓名:TFieldName,
选项?:注册表选项
)=>RefCallbackHandler;
TFieldName
是文本的并集。文本是特定的字段名值。请参见下面的示例:

接口值{
名字:字符串;
lastName:string;
}
const{register,handleSubmit}=useForm();
常量firstNameId='firstName';//字符串文字
常量lastNameId:string='lastName';//一串
返回(
//这是因为第一个参数是“firstName”|“lastName”
//这不起作用,因为它只是一个字符串,而不是
//两个文字值
);
解决方案 从中提出的解决方案对我来说有点冗长,但它现在起作用

您需要将寄存器名称强制转换为文字:


但是,如果
索引
是一个数字,则上述解决方案不起作用。当您将文字与数字混合时,如下所示:

`test.${index}.test`
因为
索引
可以是任何数字,typescript无法将其转换为精确值。文档中建议的解决方法是手动转换为文字:

{…寄存器(`test.${index}.test`as`test.0.test`)}

尝试在控制器上设置动态名称时遇到此错误。您可以添加您在
register
方法中使用的参数的代码段吗?那么,如何将类似这样的内容转换成字符串文字,它适用于v6:
${arrayName}[${index}]。fieldName
?我尝试了基于迁移文档的
${arrayName}.${index}.fieldName
,但得到了相同的错误。请参见此@KizTarget在使用“as const”时出现相同的错误。我不确定我在这里遗漏了什么。又快又脏,但是你会注意到,当使用“testIndex”时,它抛出了TS错误,而“otherIndex”则没有。我的组件上的传入属性类型为“number”@我知道原因
testIndex
是一个数字,
otherValue
是一个文字,您可以通过组合其他文字来创建文字,但不能将文字与“泛型”数字类型混合,因为它不是一个精确的值。