オブジェクトの配列を使用する場合は、yup と reverse-hook-form の名前を連結します
P粉743288436
2023-08-17 21:56:44
<p><br /></p><h4><code>react-hook-form</code> を <code>register</ 経由で <code> と結合しようとしていますcode> ;yup</code> パターンが接続されましたが、エラーが発生しました。私の目標は、入力ボックスをループでレンダリングするため、<code>exampleArray${index}.exampleProp</code> のような名前を渡すことです。 </h4>
<p>簡単な例:</p>
<pre class="brush:php;toolbar:false;">import * as yup from "yup";
import { useForm } from "react-hook-form";
"@hookform/resolvers/yup" から { yupResolver } をインポートします。
const スキーマ = yup.object().shape({
例Arr: yup.array().of(
yup.object().shape({
exampleProp:yup.string()
})
)
});
type FormValues = yup.InferType<スキーマの種類>;
デフォルト関数 App() をエクスポート {
constメソッド = useForm<FormValues>({
リゾルバ: yupResolver(スキーマ)
});
戻る (
<input type="text" {...methods.register("exampleArr[0].exampleProp")} /> // ここでエラーが発生します
);
}</pre>
<ブロック引用>
<p>タイプ '"exampleArr[0].exampleProp"' のパラメータをタイプ '"exampleArr" に割り当てることはできません | <code>exampleArr.${number}</code> | <code>exampleArr.$ {数値}.exampleProp</code>'。 </p>
</blockquote>
<p>codesandbox の例: https://codesandbox.io/s/funny-orla-97p8m2?file=/src/App.tsx</p>
exampleArr.${number}
のタイプを
に伝える必要があります:たとえば、サンドボックスでこれをテストしたところ、完璧に動作しました:
リーリー