reactjs - 如何在反应选择上仅设置值
问题描述
我在表单上使用带有 isMulti 属性的 react-select 。为简单起见,数据如下
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' }
]
如果我选择前两个选项然后提交表单,react-select 字段将具有以下值
reactSelectField: [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' }
]
如何将 fieldValue 设置为
reactSelectField: ['chocolate', 'strawberry']
这实际上是选项的值而不是整个对象?
解决方案
您可以使用 onChange 和表单状态自己转换值
const [values, setValues] = React.useState([]);
<Select
options={options}
value={values.map((value) => ({
label: value,
value,
})}
onChange={(values) => {
setValues(values.map((option) => option.value));
}}
/>
或者创建自己的包装器以您期望的格式返回值
const MyMultiSelect = ({ values = [], options = [], onChange, ...props }) => (
<Select
{...props}
value={values.map((value) => ({
label: value,
value,
})}
options={options.map((value) => ({
label: value,
value,
})}
onChange={(values) => {
onChange(values.map((option) => option.value));
}}
/>
)
// Usage
<MyMultiSelect
options={["chocolate", "strawberry", "banana"]}
values={["chocolate", "banana"]}
onChange={(values) => {
console.log(values); // ["chocolate", "banana"]
}}
/>
推荐阅读
- android - android 可访问性 dispatchGesture - 是否可以为中风指定压力
- linux - 聚合函数在 postgreSQL 中执行时间过长
- java - 用cheerio从html中提取csrf值
- react-native - 如何更新 FlatList 中的单个项目 - React Native
- python - 我怎样才能让整个网页包含片段网络
- c# - Listview 未绑定初始负载,但适用于 xamarin 表单中的 RefreshCommand
- excel - 在excel中加入字符串而不在每个单元格中手动创建公式
- python - Python 在输出中打印“无”
- r - 在R中的数字序列中查找“哪个数字不是”
- vb.net - 客户端计算机上的 Crystal Report 加载报告失败错误(VB.Net Win Forms)