首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用react钩子形式进行电话号码输入验证

用react钩子形式进行电话号码输入验证
EN

Stack Overflow用户
提问于 2021-06-19 11:11:57
回答 1查看 15.6K关注 0票数 4

电话号码输入](https://gitlab.com/catamphetamine/react-phone-number-input#readme)与反应钩式,并正常工作.我想验证电话号码与isValidPhoneNumber从反应电话号码输入,但我不知道如何实现与反应挂钩形式。我在这里读过一些关于这个问题的帖子,但我没有正确的答案。这是我的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-19 11:44:59

您可以通过为控制器的isValidPhoneNumber支柱的validate键传递rules方法来实现这一点。

你也做了个错字。在您的Controller名称中是phone-input。因此,您必须检查errors对象中的errors键,而不是phone

请找到答案。

代码语言:javascript
复制
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;
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68046226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档