setValue (name: string, value: unknown, config?: Object) => void
この関数を使用すると、動的に値を設定できます。 登録済みフィールドの値と、フォームの状態を検証および更新するオプションがあります。同時に、不要な再レンダリングを回避しようとします。
プロパティ
名前 | 型 | 説明 | |
---|---|---|---|
name | string |
| |
value | unknown | フィールドの値。この引数は必須であり、 | |
options | shouldValidate | boolean |
|
| shouldDirty | boolean |
|
| shouldTouch | boolean | 入力をタッチされた状態にするかどうか。
|
ルール
次の条件のみが再レンダリングをトリガーします
値の更新によってエラーがトリガーまたは修正された場合
setValueによって、ダーティやタッチなどの状態が更新された場合。
2番目の引数をネストされたオブジェクトにするのではなく、フィールドの名前をターゲットにすることをお勧めします。
setValue('yourDetails.firstName', 'value'); // ✅ performantsetValue('yourDetails', { firstName: 'value' }); // less performantregister('nestedValue', { value: { test: 'data' } }); // register a nested value inputsetValue('nestedValue.test', 'updatedData'); // ❌ failed to find the relevant fieldsetValue('nestedValue', { test: 'updatedData' } ); // ✅ setValue find input and update呼び出す前に、入力の名前を登録することをお勧めします
setValue
。フィールド配列全体を更新するには、最初にuseFieldArray
フックが実行されていることを確認してください。重要:
useFieldArray
からreplace
を使用してください。setValue
によるフィールド配列全体の更新は、次のメジャーバージョンで削除されます。// you can update an entire Field Array,setValue('fieldArray', [{ test: '1' }, { test: '2' }]); // ✅// you can setValue to a unregistered inputsetValue('notRegisteredInput', 'value'); // ✅ prefer to be registered// the following will register a single input (without register invoked)setValue('resultSingleNestedField', { test: '1', test2: '2' }); // 🤔// with registered inputs, the setValue will update both inputs correctly.register('notRegisteredInput.test', '1')register('notRegisteredInput.test2', '2')setValue('notRegisteredInput', { test: '1', test2: '2' }); // ✅ sugar syntax to setValue twice
例
import { useForm } from "react-hook-form";const App = () => {const { register, setValue } = useForm();return (<form><input {...register("firstName")} /><button type="button" onClick={() => setValue("firstName", "Bill")}>setValue</button><buttontype="button"onClick={() =>setValue("lastName", "firstName", {shouldValidate: true,shouldDirty: true})}>setValue options</button></form>);};
動画
次のビデオチュートリアルでは、setValue
APIについて詳しく説明します。
ご支援ありがとうございます
プロジェクトでReact Hook Formが役立つと思われる場合は、スターを付けてサポートすることを検討してください。