电话号码输入](https://gitlab.com/catamphetamine/react-phone-number-input#readme)与反应钩式,并正常工作.我想验证电话号码与isValidPhoneNumber从反应电话号码输入,但我不知道如何实现与反应挂钩形式。我在这里读过一些关于这个问题的帖子,但我没有正确的答案。这是我的代码:
import { useForm, Controller } from 'react-hook-form'
import PhoneInput, { isValidPhoneNumber } from 'react-phone-number-input'
import 'react-phone-number-input/style.css'
const MyForm = () => {
const {
handleSubmit,
formState: { errors },
control,
} = useForm()
const onSubmit = (data) => {
console.log(data)
}
return (
<form onSubmit={handleSubmit(onSubmit)} className="user-info-form">
<div>
<label htmlFor="phone-input">Phone Number</label>
<Controller
name="phone-input"
control={control}
rules={{ required: true }}
render={({ field: { onChange, value } }) => (
<PhoneInput
value={value}
onChange={onChange}
defaultCountry="TH"
id="phone-input"
/>
)}
/>
{errors.phone && <p className="error-message">Invalid Phone</p>}
</div>
</form>
)
}
export default MyForm发布于 2021-06-19 11:44:59
您可以通过为控制器的isValidPhoneNumber支柱的validate键传递rules方法来实现这一点。
你也做了个错字。在您的Controller名称中是phone-input。因此,您必须检查errors对象中的errors键,而不是phone。
请找到答案。
import React from "react";
import { useForm, Controller } from "react-hook-form";
import PhoneInput, { isValidPhoneNumber } from "react-phone-number-input";
import "react-phone-number-input/style.css";
const MyForm = () => {
const {
handleSubmit,
formState: { errors },
control
} = useForm();
const onSubmit = (data) => {
console.log(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)} className="user-info-form">
<div>
<label htmlFor="phone-input">Phone Number</label>
<Controller
name="phone-input"
control={control}
rules={{
validate: (value) => isValidPhoneNumber(value)
}}
render={({ field: { onChange, value } }) => (
<PhoneInput
value={value}
onChange={onChange}
defaultCountry="TH"
id="phone-input"
/>
)}
/>
{errors["phone-input"] && (
<p className="error-message">Invalid Phone</p>
)}
</div>
</form>
);
};
export default MyForm;https://stackoverflow.com/questions/68046226
复制相似问题