getValues: (payload?: string | string[]) => Object
An optimized helper for reading form values. The difference between watch
and getValues
is that getValues
will not trigger re-renders or subscribe to input changes.
<input {...register('yourDetails.firstName')} /> <input {...register('yourDetails.lastName')} />
The example below shows what to expect when you invoke getValues
method.
Input Name | Example |
---|---|
getValues("yourDetails") | { firstName: '', lastName: '' } |
getValues("yourDetails.firstName") | { lastName: '' } |
getValues(["yourDetails.lastName"]) | [{ firstName: '' }] |
Rules
You shouldn't use this method inside render. This is suitable for reading values in an event handler.
Disabled input will be returned undefined as result, if you want to prevent users from update the input, you can use
readOnly
or disable the entire <fieldset />. Here is an example.It will return
defaultValues
fromuseForm
before the initial render.getValues()
: Read all form values.getValues('test')
: Read an individual field value by name.getValues(['test', 'test1'])
: Read multiple fields by name.
import React from "react"; import { useForm } from "react-hook-form"; export default function App() { const { register, getValues } = useForm(); return ( <form> <input {...register("test")} /> <input {...register("test1")} /> <button type="button" onClick={() => { const values = getValues(); // { test: "test-input", test1: "test1-input" } const singleValue = getValues("test"); // "test-input" const multipleValues = getValues(["test", "test1"]); // [{ test: "test-input" }, { test1: "test1-input" }] }} > Get Values </button> </form> ); }
import React from "react"; import { useForm } from "react-hook-form"; type FormInputs = { test: string test1: string } export default function App() { const { register, getValues } = useForm<FormInputs>(); return ( <form> <input {...register("test")} /> <input {...register("test1")} /> <button type="button" onClick={() => { const values = getValues(); // { test: "test-input", test1: "test1-input" } const singleValue = getValues("test"); // "test-input" const multipleValues = getValues(["test", "test1"]); // [{ test: "test-input" }, { test1: "test1-input" }] }} > Get Values </button> </form> ); }
import React from "react"; import { useForm } from "react-hook-form"; // Flat input values type Inputs = { key1: string; key2: number; key3: boolean; key4: Date; }; export default function App() { const { register, getValues } = useForm<Inputs>(); getValues(); return <form />; } // Nested input values type Inputs1 = { key1: string; key2: number; key3: { key1: number; key2: boolean; }; key4: string[]; }; export default function Form() { const { register, getValues } = useForm<Inputs1>(); getValues(); // function getValues(): Record<string, unknown> getValues("key1"); // function getValues<"key1", unknown>(payload: "key1"): string getValues("key2"); // function getValues<"key2", unknown>(payload: "key2"): number getValues("key3.key1"); // function getValues<"key3.key1", unknown>(payload: "key3.key1"): unknown getValues<string, number>("key3.key1"); // function getValues<string, number>(payload: string): number getValues<string, boolean>("key3.key2"); // function getValues<string, boolean>(payload: string): boolean getValues("key4"); // function getValues<"key4", unknown>(payload: "key4"): string[] return <form />; }