代码之家  ›  专栏  ›  技术社区  ›  Yahya

不能将我保存在props中的id用作reactselect中的默认值

  •  0
  • Yahya  · 技术社区  · 10 月前

    我有一个呈现可重用下拉列表的组件。当我使用它添加新项目时,我可以设置类别。但是,当我使用它来编辑项目时,下拉列表不会显示所选的类别。但是,我已将类别_id作为道具发送。

    export default function RHFSelect({
      label,
      name,
      register,
      options,
      required,
      validationschema,
      errors,
      categoryID = "",
    }) {
      return (
        <div>
          <select
            className="textField__input"
            {...register(name, validationschema)}
            id={name}
            defaultValue={categoryID}
          >
            <option value="">Please select the project category</option>
    
            {options.map((option) => {
              return (
                <option key={option.value} value={option.value}>
                  {option.label}
                </option>
              );
            })}
          </select>
          {errors && errors[name] && (
            <span className="text-error block text-sm mt-2">
              {errors[name]?.message}
            </span>
          )}
        </div>
      );
    }
    

    选项是从数据库中获取的类别列表。 默认情况下,categoryID是一个空字符串,但在编辑项目模式下,它是一个类别的id,项目属于它。 我希望在添加模式下显示“请选择项目类别”,在编辑模式下显示我之前选择的类别。

    提前感谢。

    1 回复  |  直到 10 月前
        1
  •  1
  •   Build Though    10 月前

    不要在select中直接使用默认值,而是在react钩子窗体或您正在使用的任何库窗体中使用,或者像这样更新以获得简单的解决方案

    <select
     className="textField__input"
     {...register(name, validationschema)}
     id={name}
     value={categoryID}
     onChange={(e) => register(name).onChange(e)}>
    

    或使用 setValue('notRegisteredInput', 'value'); // example in useEffect 钩子设置重新渲染中的初始值。