如何使用 react-select 获取字符串数组作为 react-final-form 的提交值?
How can I get an array of strings as the submitted value for react-final-form using react-select?
我正在尝试让 react-select 的 multi-select 组件将 selected 值作为字符串数组提交,但它作为一个{label, value} 对象数组。
我将通过 react-final-form 的 Field 组件传递给 react-select 的对象的结构是这样的:
[
{ val: "first-value", display: "First Value" },
{ val: "second-value", display: "Second Value" },
{val: "third-value", display: "Third Value"
];
通过属性getOptionLabel={option => option.display}
可以将选项标签更改为对象给定的显示键。
然而,为 getOptionValue
做同样的事情在提交时仍然给我整个 {val, display}
对象。例如select输入第一项并提交表格会得到 [{val: "first-value", display: "First Value" }]
,而我只想要 ["first-value"]
我不太确定这是我需要在 react-final-form 还是 react-select
上解决的问题
import React from "react";
import { Field } from "react-final-form";
import { Form } from "react-final-form";
import Select from "react-select";
const data = [{ val: "1", display: "123" }, { val: "2", display: "321" }];
const Test2: React.FC<any> = () => {
return (
<Form
onSubmit={values => console.log(values)}
showErrorModal={showErrorModal}
setShowErrorModal={setShowErrorModal}
>
{() => (
<>
<Field
name="test"
component={MultiSelect}
label={"Multi Select test"}
placeholder="Please Select..."
options={data}
getOptionLabel={option => `${option.display}`}
getOptionValue={option => `${option.val}`}
/>
<SubmitButton btnTxt="next" />
</>
)}
</Form>
);
};
export default Test2;
提交时,我在控制台上得到的消息是
[{"val": "1", "display": "123"}, {"val": "2", "display": "321"}]
而我希望的结果是
["1","2"]
getOptionLabel
& getOptionValue
仅供观赏。
当我们获得选定的值时,它将为您提供完整的 object
,因为我们向 options
提供了对象数组。
所以结果,
onSubmit={values => console.log(values)}
是正确的,也就是[{"val": "1", "display": "123"}, {"val": "2", "display": "321"}]
您需要进一步处理此结果以获得您想要的结果,
onSubmit={values => console.log(values.map(data=>data.val))}
我正在尝试让 react-select 的 multi-select 组件将 selected 值作为字符串数组提交,但它作为一个{label, value} 对象数组。
我将通过 react-final-form 的 Field 组件传递给 react-select 的对象的结构是这样的:
[
{ val: "first-value", display: "First Value" },
{ val: "second-value", display: "Second Value" },
{val: "third-value", display: "Third Value"
];
通过属性getOptionLabel={option => option.display}
可以将选项标签更改为对象给定的显示键。
然而,为 getOptionValue
做同样的事情在提交时仍然给我整个 {val, display}
对象。例如select输入第一项并提交表格会得到 [{val: "first-value", display: "First Value" }]
,而我只想要 ["first-value"]
我不太确定这是我需要在 react-final-form 还是 react-select
上解决的问题import React from "react";
import { Field } from "react-final-form";
import { Form } from "react-final-form";
import Select from "react-select";
const data = [{ val: "1", display: "123" }, { val: "2", display: "321" }];
const Test2: React.FC<any> = () => {
return (
<Form
onSubmit={values => console.log(values)}
showErrorModal={showErrorModal}
setShowErrorModal={setShowErrorModal}
>
{() => (
<>
<Field
name="test"
component={MultiSelect}
label={"Multi Select test"}
placeholder="Please Select..."
options={data}
getOptionLabel={option => `${option.display}`}
getOptionValue={option => `${option.val}`}
/>
<SubmitButton btnTxt="next" />
</>
)}
</Form>
);
};
export default Test2;
提交时,我在控制台上得到的消息是
[{"val": "1", "display": "123"}, {"val": "2", "display": "321"}]
而我希望的结果是
["1","2"]
getOptionLabel
& getOptionValue
仅供观赏。
当我们获得选定的值时,它将为您提供完整的 object
,因为我们向 options
提供了对象数组。
所以结果,
onSubmit={values => console.log(values)}
是正确的,也就是[{"val": "1", "display": "123"}, {"val": "2", "display": "321"}]
您需要进一步处理此结果以获得您想要的结果,
onSubmit={values => console.log(values.map(data=>data.val))}