在输入名称上react-hooks形式 useFieldArray typescript错误

IT技术 reactjs typescript react-hook-form
2021-05-01 03:12:37

我在typescript中为动态表单编写了以下内容

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)}部分收到错误

“字符串”类型的参数不能分配给“会话”类型的参数 | "姓名" | session.${number}| session.${number}.name'ts(2345)

当我不传入 FormData 时错误消失

const { control, register, handleSubmit } = useForm()
1个回答

在 v7 中,register()接受文字(确切的字符串值)而不是字符串。因此,将您的代码更改为:

<input type={"text"} {...register(`session.${index}.name` as const)} />

避免类型扩展。请参阅常量断言

相关问题: