Verketten Sie die Namen „yup' und „react-hook-form', wenn Sie ein Array von Objekten verwenden
P粉743288436
2023-08-17 21:56:44
<p><br /></p><h4>Ich versuche, <code>react-hook-form</code> über <code>register</ zu kombinieren. code> ;yup</code> Muster wurde verbunden, aber es ist ein Fehler aufgetreten. Mein Ziel ist es, einen Namen wie <code>exampleArray${index}.exampleProp</code> zu übergeben, da ich das Eingabefeld in einer Schleife rendern werde. </h4>
<p>Ein einfaches Beispiel:</p>
<pre class="brush:php;toolbar:false;">import * as yup from "yup";
import { useForm } from „react-hook-form“;
import { yupResolver } from „@hookform/resolvers/yup“;
const schema = yup.object().shape({
exampleArr: yup.array().of(
yup.object().shape({
exampleProp:yup.string()
})
)
});
type FormValues = yup.InferType<typeof schema>;
Standardfunktion App() exportieren {
const-Methoden = useForm<FormValues>({
Resolver: yupResolver(schema)
});
zurückkehren (
<input type="text" {...methods.register("exampleArr[0].exampleProp")} /> // Fehler hier
);
}</pre>
<blockquote>
<p>Parameter vom Typ „exampleArr[0].exampleProp“ kann nicht dem Typ „exampleArr“ | zugewiesen werden { number}.exampleProp</code>'. </p>
</blockquote>
<p>Beispiel in codesandbox: https://codesandbox.io/s/funny-orla-97p8m2?file=/src/App.tsx</p>
你需要告诉
exampleArr.${number}
的类型是什么:例如,我刚在你的沙盒上测试了一下,它运行得很好: