reactjs - 反应多选形式仅将一个选项保存到数组
问题描述
我正在尝试创建一个多选表单。但是当我提交时,只有第一个选项被保存到数组中,而不是所有选定的选项。我正在从位置集合中获取选项,并且我正在将表单提交到类别集合。可能是什么问题?
const handleInputChange = (e) => {
setCategory({ ...category, [e.target.name]: e.target.value });
};
return (
<div>
<form onSubmit={handleSubmit}>
<div className='form-group'>
<select
name='location'
onChange={handleInputChange}
size={locations.length}
className='form-control'
multiple
>
{locations.map((location) => (
<option value={location.title}>
{location.title}
</option>
))}
</select>
</div>
<button>Add</button>
</form>
</div>
);
解决方案
请检查这个例子:
import React from 'react';
import MenuItem from '@material-ui/core/MenuItem';
import FormControl from '@material-ui/core/FormControl';
import Select from '@material-ui/core/Select';
export default class DropDownMenuExample extends React.Component {
constructor(props) {
super(props);
this.state = {value: []};
}
handleChange(event) {
let value = event.target.value;
this.setState({value})
};
render() {
return (
<div>
<FormControl>
<Select
labelId="demo-controlled-open-select-label"
id="demo-controlled-open-select"
value={this.state.value}
multiple
onChange={this.handleChange.bind(this)}
>
<MenuItem value={1}>Blue</MenuItem>
<MenuItem value={2}>Red</MenuItem>
<MenuItem value={3}>Green</MenuItem>
<MenuItem value={4}>Black</MenuItem>
<MenuItem value={5}>Purple</MenuItem>
<MenuItem value={6}>Yellow</MenuItem>
<MenuItem value={7}>Maroon</MenuItem>
<MenuItem value={8}>Gray</MenuItem>
<MenuItem value={9}>Silver</MenuItem>
<MenuItem value={10}>Gold</MenuItem>
</Select>
</FormControl>
</div>
);
}
}
推荐阅读
- cypress - 当 cypress 中的 DOM 中不存在元素时显示错误消息
- web-crawler - 提交的 URL 被 robots.txt 阻止
- vbscript - 经典的 asp 发布登录表单不再起作用
- laravel - 在 Laravel 5.7 中使用 Guzzle 6 在 Sage API 3.1 上工作时缺少请求正文
- jquery - Ajax 表单偶尔会将数据添加到 URL 而不是 POST 然后重定向
- matlab - 如何签署已编译的 matlab 程序的已安装可执行文件?
- c# - 是否有任何预定义的异常类型用作异常列表的容器?
- java - JLabel鼠标事件一键生效两次
- docker - Ansible Docker:使用容器执行 shell 文件
- javascript - 带有输入的位置固定容器超出了边界