Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 福米克,反应选择&;多变量_Reactjs_Next.js_Formik_React Select - Fatal编程技术网

Reactjs 福米克,反应选择&;多变量

Reactjs 福米克,反应选择&;多变量,reactjs,next.js,formik,react-select,Reactjs,Next.js,Formik,React Select,我完全搞不懂这件事。我有一个与formik&react select配合使用的现有select,但我无法将其作为多个应用程序使用。以下是我目前掌握的情况: import Select from 'react-select'; import { useField } from 'formik'; export default function SelectField(props) { const [field, state, { setValue, setTouched }] = useFi

我完全搞不懂这件事。我有一个与formik&react select配合使用的现有select,但我无法将其作为多个应用程序使用。以下是我目前掌握的情况:

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} />;
}
从“反应选择”导入选择;
从'formik'导入{useField};
导出默认函数SelectField(道具){
const[field,state,{setValue,setmoucted}]=useField(props.field.name);
const onChange=({value})=>{
设置值(值);
};
返回;
}


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


谢谢你的帮助

react select
从单个对象接收到
isMulti
时,
onChange
的参数类型会发生变化。使用isMulti时,不需要进行破坏;第一个参数是值

您还希望通过管理其
,使
反应选择
成为受控组件

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} />;
}
导出默认函数SelectField(props){
const[field,state,{setValue,setmoucted}]=useField(props.field.name);
//值现在是数组
const onChange=(值)=>{
设置值(值);
};
//使用值使其成为受控组件
//现在,当表单收到“campfeatures”的值时,它将按预期填充
返回;
}

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

很抱歉延迟响应,但谢谢您。这很有帮助。现在我只想知道如何将阵列应用到路由器上?这就是我现在拥有的:const handleSubmit=async values=>{Router.push({pathname:'/camps',query:{…values,page:1},},undefined,{shall:true}),但如果我进行搜索,我会得到以下结果:
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} />;
}