reactjs - react-final-form 多选
问题描述
我正在尝试通过 Material-UI 使用 react-final-form 构建一个具有多值选择组件的表单。不知何故,使用单个选择,我可以获得价值,但使用多个,它不会。不知何故,react-final-form 似乎在内部保持着自己的价值。
这是 Material-UI 中用于构建多个 Select 的指导链接:
https://codesandbox.io/s/sr6pf
我试图在我的表单中复制第一个示例(不使用反应钩子),但我仍然错过了什么?
https://codesandbox.io/embed/react-final-form-material-ui-example-jfmoe
我应该在我的组件中添加什么来完成这项工作?
谢谢,
解决方案
由于某些原因,我设法为我自己的问题找到了解决方案。正确的答案是创建一个自定义的 MultiSelect 组件,而不是重用来自final-form-material-ui
.
注意:我尝试使用<Select />
fromfinal-form-material-ui
但向multiple
组件添加 prop 不会传递给 ,这很奇怪。
所以,我的自定义组件看起来像这样,几乎与他们的 github中添加了multiple
prop 的组件相似。
import React from 'react';
import FormControl from '@material-ui/core/FormControl';
import FormHelperText from '@material-ui/core/FormHelperText';
import InputLabel from '@material-ui/core/InputLabel';
import Select from '@material-ui/core/Select';
function SelectMulti({
input: { name, value, onChange, ...restInput },
meta,
label,
formControlProps,
...rest
}) {
const showError =
((meta.submitError && !meta.dirtySinceLastSubmit) || meta.error) &&
meta.touched;
return (
<FormControl {...formControlProps} error={showError}>
<InputLabel htmlFor={name} shrink>
{label}
</InputLabel>
<Select
{...rest}
multiple
name={name}
value={value}
onChange={onChange}
inputProps={restInput}
/>
{showError && (
<FormHelperText>{meta.error || meta.submitError}</FormHelperText>
)}
</FormControl>
);
}
SelectMulti.propTypes = {};
export default SelectMulti;
希望这对将来的人有所帮助
推荐阅读
- arrays - 使用 For 循环在 VBA 中创建新数组
- django - 将模型字段作为参数传递给函数以创建其他字段 django
- arrays - Swift Array 如何支持有效的 Element 子类型赋值?
- gensim - 有没有办法在训练 doc2vec 模型之前加载预训练的词向量?
- mysql - 如何导入用外键删除的表?
- javascript - Ping service worker 不显示通知
- ruby - 如何获得最大总和的行?
- javascript - 如何使用 multer 将文件通过管道传输到 Google Cloud Storage?
- angularjs - AngularJS:服务完成异步请求后如何初始化组件
- css - 无法使用 Tailwindcss 使表单居中