REACT HOOKS使用入力例(簡単な原価入力フォーム作成)-final(useForm使用)
14593 ワード
useFormコードを書いてとても簡潔になりました...利益を得る.ほほほ
useFormの使用
useFormの使用
1.useFormの読み込み
//useForm 불어오기
const {
register,
handleSubmit,
reset,
formState: { errors },
} = useForm();
2.有効性変数を含む
const regEx = {
number: /[0-9]/g,
email: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
kor: /^[가-힣]+$/,
eng: /[a-zA-Z]+$/,
};
3.validatorオブジェクト変数を含む
const validator = {
userId: {
...register("userId", {
required: { value: true, message: "이름은 필수 항목입니다." },
}),
},
age: {
...register("age", {
required: { value: true, message: "나이는 필수 항목입니다." },
pattern: { value: regEx.number, message: "나이는 숫자로 입력해주세요" },
maxLength: { value: 2, message: "나이는 두자리입니다." },
}),
},
gender: {
...register("gender", {
required: { value: true, message: "성별은 필수 항목입니다." },
pattern: { value: regEx.eng, message: "성별은 영어로 입력해주세요." },
}),
},
phone: {
...register("phone", {
required: { value: true, message: "휴대폰번호는 필수 항목입니다." },
pattern: {
value: regEx.number,
message: "휴대폰번호를 숫자로 입력해주세요.",
},
}),
},
email: {
...register("email", {
required: false,
pattern: {
value: regEx.email,
message: "이메일 형식으로 입력해주세요.",
},
}),
},
address: {
...register("address", {
pattern: { value: regEx.kor, message: "주소를 한글로 입력해주세요" },
}),
},
};
4.inputに適用
return(<>
<form>
<div className="inputBox">
<label htmlFor="userId">Name</label>
<input type="text" {...validator.userId} />
{errors.userId && (
<span className="errorMsg">❌ {errors.userId.message}</span>
)}
</div>
{...생략}
</form>
</>
)
障害が発生した場合にspanラベルを作成して障害メッセージを表示
5.データ情報をリセットして適用します。jsに転送します。
const onSubmit = (data) => {
onUpdate(data);
reset({
userId: "",
phone: "",
address: "",
gender: "",
age: "",
email: "",
});
};
6.結果
1.submitをクリックして何も入力しない
2.パターンに合わない場合
3.フォーマットを入力して「発行」(Submit)をクリックします。
データはAppです.よくjsに伝わります!成功した!
Reference
この問題について(REACT HOOKS使用入力例(簡単な原価入力フォーム作成)-final(useForm使用)), 我々は、より多くの情報をここで見つけました
https://velog.io/@holicholicpop/REACTHOOKS-useInput-예제-간단한-회원가입폼-만들기-finaluseForm사용하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
//useForm 불어오기
const {
register,
handleSubmit,
reset,
formState: { errors },
} = useForm();
const regEx = {
number: /[0-9]/g,
email: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
kor: /^[가-힣]+$/,
eng: /[a-zA-Z]+$/,
};
const validator = {
userId: {
...register("userId", {
required: { value: true, message: "이름은 필수 항목입니다." },
}),
},
age: {
...register("age", {
required: { value: true, message: "나이는 필수 항목입니다." },
pattern: { value: regEx.number, message: "나이는 숫자로 입력해주세요" },
maxLength: { value: 2, message: "나이는 두자리입니다." },
}),
},
gender: {
...register("gender", {
required: { value: true, message: "성별은 필수 항목입니다." },
pattern: { value: regEx.eng, message: "성별은 영어로 입력해주세요." },
}),
},
phone: {
...register("phone", {
required: { value: true, message: "휴대폰번호는 필수 항목입니다." },
pattern: {
value: regEx.number,
message: "휴대폰번호를 숫자로 입력해주세요.",
},
}),
},
email: {
...register("email", {
required: false,
pattern: {
value: regEx.email,
message: "이메일 형식으로 입력해주세요.",
},
}),
},
address: {
...register("address", {
pattern: { value: regEx.kor, message: "주소를 한글로 입력해주세요" },
}),
},
};
return(<>
<form>
<div className="inputBox">
<label htmlFor="userId">Name</label>
<input type="text" {...validator.userId} />
{errors.userId && (
<span className="errorMsg">❌ {errors.userId.message}</span>
)}
</div>
{...생략}
</form>
</>
)
const onSubmit = (data) => {
onUpdate(data);
reset({
userId: "",
phone: "",
address: "",
gender: "",
age: "",
email: "",
});
};
Reference
この問題について(REACT HOOKS使用入力例(簡単な原価入力フォーム作成)-final(useForm使用)), 我々は、より多くの情報をここで見つけました https://velog.io/@holicholicpop/REACTHOOKS-useInput-예제-간단한-회원가입폼-만들기-finaluseForm사용하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol