我正在使用react-final-form
发送一些基本的用户数据。名字、姓氏、电子邮件和下拉值,其中包含他们与我联系的原因。我尝试了以下内容(react-final-form
的文档上的自定义输入部分(:
<Field name="myField">
{props => (
<div>
<Select
options={colourOptions}
className="basic-multi-select"
classNamePrefix="select"
onChange={props.input.onChange}
/>
</div>
)}
</Field>
我的猜测是可能与onChange
道具有一些碰撞?不确定,但下拉列表中的信息未被react-final-form
选取并在提交时传递给<form>
。
有一个关于如何将react-select
与react-final-form
一起使用的示例:https://codesandbox.io/s/40mr0v2r87。
您应该添加一个适配器:
const ReactSelectAdapter = ({ input, ...rest }) => (
<Select {...input} {...rest} />
)
然后,您可以将其用作组件:
<Field
name="state"
component={ReactSelectAdapter}
options={states}
/>
这是我的方法。我决定初始值和将发送到服务器的值的问题。就像:
{selectFieldId: "value"}
import React from "react";
import { FieldRenderProps } from "react-final-form";
import Select, { ValueType } from "react-select";
type Option = {
label: string;
value: string;
};
export const CustomSelect = ({ input, options, ...rest }: FieldRenderProps<string, HTMLElement>) => {
const handleChange = (option: ValueType<Option, false>) => {
input.onChange(option?.value);
};
return (
<Select
{...input}
{...rest}
onChange={handleChange}
options={options}
value={options ? options.find((option: Option) => option.value === input.value) : ""}
/>
);
};
export default CustomSelect;
以一种简单的方式,我是这样做的:
const locationOptions = [
{ value: 1, label: "ADEN" },
{ value: 2, label: "MUKALLA" },
{ value: 3, label: "TAIZ" },
];
<Field name="location_id">
{({ input }) => (
<Select
options={locationOptions}
placeholder="Select Location"
{...input}
/>
)}
</Field>
提交时方法:
const onSubmit = (data) => {
console.log(data);
};