首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formik,React-Select & Multiple Variable

Formik,React-Select & Multiple Variable
EN

Stack Overflow用户
提问于 2021-03-09 09:45:35
回答 1查看 1.2K关注 0票数 0

当涉及到弄清楚这一点时,我完全迷惑了。我有一个现有的select可以与formik & react-select一起使用,但是我不能让它作为一个多项来工作。这是我到目前为止所知道的:

代码语言:javascript
复制
import Select from 'react-select';
import { useField } from 'formik';

export default function SelectField(props) {
  const [field, state, { setValue, setTouched }] = useField(props.field.name);

  const onChange = ({ value }) => {
    setValue(value);
  };

  return <Select {...props} onChange={onChange} onBlur={setTouched} />;
}

代码语言:javascript
复制
 <Field
     component={SelectField}
      name="campfeatures"
      options={selectObjects}
            />

我该如何将其转变为能够进行多选?如果我将isMulti添加到字段中,它将“工作”,但它实际上不会保留多个值。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 11:07:49

react-select接收到从单个对象到对象列表的isMulti时,onChange的参数类型会发生变化。在使用isMulti时,您不需要析构;第一个参数是值。

您还希望通过管理react-selectvalue使其成为受控组件。

代码语言:javascript
复制
export default function SelectField(props) {
  const [field, state, { setValue, setTouched }] = useField(props.field.name);
  
  // value is an array now
  const onChange = (value) => {
    setValue(value);
  };

 // use value to make this a  controlled component
 // now when the form receives a value for 'campfeatures' it will populate as expected
  return <Select {...props} value={state?.value} isMulti onChange={onChange} onBlur={setTouched} />;
}

新值是具有标签和值字段的所选选项的数组。如果只想存储值,则需要将其映射到一个值,并修改react-select以处理此问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66539650

复制
相关文章

相似问题

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