首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Hook表单和React Select未按预期工作

React Hook表单和React Select未按预期工作
EN

Stack Overflow用户
提问于 2021-10-12 23:41:28
回答 2查看 560关注 0票数 0

根据文档(https://react-hook-form.com/get-started#IntegratingControlledInputs),我正在尝试使用Controller包装器组件在React Hook窗体中包装React Select

代码语言:javascript
复制
            <Controller
              name="ShiftCaptain"
              control={control}
              render={({ field }) => (
                <Select
                  {...field}
                  value={selectValue}
                  options={options}
                  placeholder={"Select Person"}
                  onChange={(e) => setSelectValue(e)}
                />
              )}
            />

在表单提交时,React Select中捕获的值不会填充到React Hook表单中:

有什么想法吗?

提亚

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-13 11:43:41

您在<ReactSelect />组件上传播的render回调的field对象有一个value和一个onChange属性,RHF需要该属性将值链接到它的内部表单状态。现在你覆盖了它,所以RHF不能更新这个值。试一试,它应该是有效的:

代码语言:javascript
复制
<Controller
  name="ShiftCaptain"
  control={control}
  defaultValue={null}
  render={({ field }) => (
    <Select
      {...field}
      options={options}
      placeholder={"Select Person"}
      
    />
  )}
/>

如果您想在页面加载后为select设置默认值,您应该使用<Controller /> defaultValue属性,它会将该值传递给您的<ReactSelect />

票数 2
EN

Stack Overflow用户

发布于 2021-10-13 00:16:26

请选中此代码沙箱。https://codesandbox.io/s/react-hook-form-v7-controller-forked-40t3s?file=/src/index.js

代码语言:javascript
复制
  const handleOnChange = (e) => {
    setSelectedValue(e.value);
  };
<label>React Select</label>
          <Controller
            name="ReactSelect"
            control={control}
            render={({ field }) => (
              <ReactSelect
                isClearable
                {...field}
                value={selectedValue}
                onChange={handleOnChange}
                options={[
                  { value: "chocolate", label: "Chocolate" },
                  { value: "strawberry", label: "Strawberry" },
                  { value: "vanilla", label: "Vanilla" }
                ]}
              />
            )}
          />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69548100

复制
相关文章

相似问题

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