简体   繁体   English

使用 react-hook-form 验证 select 列表

[英]Validate select list with react-hook-form

I want to implement validation for React form using react-hook-form .我想使用react-hook-form实现对 React 表单的验证。 For input value I implemented this:对于输入值,我实现了这个:

       <div className='input-group mb-3'>
          <Controller
              control={control}
              name={"email"} //  the key of json
              defaultValue={""}
              render={({ field }) => (
                  <input
                      {...field}
                      type="email"
                      className="form-control"
                      placeholder="Email"
                      aria-label="email"
                      onChange={(e) => field.onChange(e.target.value)}
                  />
              )}
          />
        </div>

For me it's not clear how I need to implement it for select menu:对我来说,不清楚我需要如何为 select 菜单实现它:

            <div className='input-group mb-3'>
              <select
                className='form-control form-select'
                name='budget'
                id='budget'
                required=''
                data-msg='Please select your budget.'
              >
                <option value=''>Budget</option>                  
                <option value='budget3'>More than $500,000</option>
              </select>
            </div>

Wat is the proper way to implement it? Wat是实现它的正确方法吗?

somethings like this works?像这样的东西有效吗?

<Controller
  control={control}
  name="budget"
  rules={{
    budget: {
      required: "Required",
    },
  }}
  render={({ field }) => (
    <select name="budget" onChange={field.onChange} value={field.value}>
      <option value="">Please select your budget</option>
      <option value="budget3">More than $500,000</option>
      <option value="budget2">$250,000 - $500,000</option>
      <option value="budget1">$100,000 - $250,000</option>
      {/* more budgets */}
    </select>
  )}
/>;

control is destructured from useForm like so: controluseForm解构,如下所示:

const { controls, register, setValue, ...moreEls } = useForm();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM