13
loading...
This website collects cookies to deliver better user experience
npx create-react-app react-hook-form-demo
cd react-hook-form-demo
npm install react-hook-form
npm start
const App=()=> {
return (
<form>
<input type="text" placeholder="user name"/>
<button type="submit">submit</button>
</form>
);
}
export default App;
import { useForm } from "react-hook-form";
const App = () => {
const { register, handleSubmit } = useForm();
const onSubmit = (data) => console.log(data);
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input type="text" placeholder="user name" {...register("userName")} />
<button type="submit">submit</button>
</form>
);
};
export default App;
const { register, handleSubmit } = useForm({
defaultValues: {
userName: "Mai",
}
});
import { useForm } from "react-hook-form";
const App = () => {
const {
register,
handleSubmit,
formState: { errors },
} = useForm({ mode: "onChange" });
const onSubmit = (data) => console.log(data);
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input
type="text"
placeholder="user name"
{...register("userName", {
required: true,
minLength: {
value: 3,
},
})}
/>
{errors.userName?.type === "required" && (
<small>user name is required</small>
)}
{errors.userName?.type === "minLength" && (
<small>user name must be atleast 3</small>
)}
<button type="submit">submit</button>
</form>
);
};
export default App;
{userName:"toty",
address:{country:"x",city:"y"}
}
import { useForm } from "react-hook-form";
const App = () => {
const {
register,
handleSubmit,
formState: { errors },
} = useForm({ mode: "onChange" });
const onSubmit = (data) => console.log(data);
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input
type="text"
placeholder="user name"
{...register("userName", {
required: true,
minLength: {
value: 3,
},
})}
/>
{errors.userName?.type === "required" && (
<small>user name is required</small>
)}
{errors.userName?.type === "minLength" && (
<small>user name must be atleast 3</small>
)}
<input
type="text"
placeholder="country"
{...register("address.country", {
required: true,
})}
/>
<input
type="text"
placeholder="city"
{...register("address.city", {
required: true,
})}
/>
<button type="submit">submit</button>
</form>
);
};
export default App;
import { Form } from "react-bootstrap";
const Input = ({
label,
type,
placeholder,
controls,
errorMsg,
disabled,
}) => {
return (
<div className="mb-3">
{label && <Form.Label>
{label}</Form.Label>}
<Form.Control
{...controls}
type={type}
placeholder={placeholder}
disabled={disabled}
/>
{errorMsg && <small>
{errorMsg}</small>}
</div>
);
};
export default Input;
<Input
label="User Name"
type="text"
placeholder="enter your user name"
controls={register("userName", {
required: true,
minLength: {
value: 3,
},
})}
errorMsg={
errors.userName?.type === "required" &&
"user name is required"
}
/>
npm install react-select
import React from "react";
import Select from "react-select";
import { Controller } from "react-hook-form";
const InputSelect = ({
options,
label,
control,
controls,
name,
errorMsg,
placeholder,
asterick,
}) => {
return (
<>
<label>
{label} {asterick && <span>*</span>}
</label>
<Controller
name={name}
isClearable
control={control}
{...controls}
render={({ field }) => (
<Select
{...field}
options={options}
placeholder={placeholder}
/>
)}
/>
{errorMsg && <small>{errorMsg}</small>}
</>
);
};
export default InputSelect;
Controller
meansconst genderOptions = [
{ value: "male", label: "Male" },
{ value: "female", label: "Female" },
];
<InputSelect
control={control}
options={genderOptions}
placeholder="Gender"
asterick={true}
label="Gender"
name="gender"
controls={register("gender", {
required: true,
})}
errorMsg={
errors?.gender?.type === "required" &&
"gender is required"
}
/>