输入名称上的 React 挂钩形式 useFieldArray 打字稿错误
React hook form useFieldArray typescript error on input name
我已经用打字稿为动态表单编写了以下内容
type FormData = {
name: string,
session: { name: string }[]
}
...
const { control, register, handleSubmit } = useForm<FormData>()
const { fields, insert, remove, move, append } = useFieldArray({
control,
name: "session",
keyName: "id"
})
...
{
fields.map((field, index) => {
return <div key={field.id}>
<div>
<label>Session {index}</label>
<input type={"text"} {...register(`session.${index}.name`)} />
</div>
</div>
})
}
我在 {...register(session.${index}.name
)}
部分收到错误
Argument of type 'string' is not assignable to parameter of type '"session" | "name" | session.${number}
| session.${number}.name
' ts(2345)
当我不传入 FormData 时错误消失
const { control, register, handleSubmit } = useForm()
在 v7 中,register()
接受文字(精确的字符串值)而不是字符串。因此,将您的代码更改为:
<input type={"text"} {...register(`session.${index}.name` as const)} />
避免类型扩大。参见 const assertions。
相关问题:
- Argument of type 'string' is not assignable to parameter of type '`${string}` | `${string}.${string}` | `${string}.${number}`'
我已经用打字稿为动态表单编写了以下内容
type FormData = {
name: string,
session: { name: string }[]
}
...
const { control, register, handleSubmit } = useForm<FormData>()
const { fields, insert, remove, move, append } = useFieldArray({
control,
name: "session",
keyName: "id"
})
...
{
fields.map((field, index) => {
return <div key={field.id}>
<div>
<label>Session {index}</label>
<input type={"text"} {...register(`session.${index}.name`)} />
</div>
</div>
})
}
我在 {...register(session.${index}.name
)}
Argument of type 'string' is not assignable to parameter of type '"session" | "name" |
session.${number}
|session.${number}.name
' ts(2345)
当我不传入 FormData 时错误消失
const { control, register, handleSubmit } = useForm()
在 v7 中,register()
接受文字(精确的字符串值)而不是字符串。因此,将您的代码更改为:
<input type={"text"} {...register(`session.${index}.name` as const)} />
避免类型扩大。参见 const assertions。
相关问题:
- Argument of type 'string' is not assignable to parameter of type '`${string}` | `${string}.${string}` | `${string}.${number}`'