受控组件 - 4 - select 单多选

import React, { PureComponent } from 'react'

export class App extends PureComponent {
	constructor() {
		super()
		this.state = {
			fruit: 'orange',
			fruit2: []
		}
	}

	handleSubmitClick(e) {
		// 1、阻止form的默认行为
		e.preventDefault()
		// 2、获取所有的表单数据,对数据进行组织
		console.log('获取爱好=', this.state)
		// 3、以网络请求的方式,将数据传递给服务器(axios)
	}

	`select 单选`
	handleSelectChange(e) {
		this.setState(
			{ fruit: e.target.value },
			() => {
				console.log('fruit=', this.state.fruit)
			}
		)
	}

	`select 多选`
	handleSelectChange2(e) {
		`数组 = Array.from(伪数组或者可迭代对象)`
		`e.target.selectedOptions:是一个 HTMLCollection 对象,
		 包含所有被选中的 <option> 元素,
		 遍历每个选中的 <option> 元素,提取其 value 属性值(如 "apple"),
		 最终生成类似 ["apple", "banana"] 的数组。`
		const options = Array.from(e.target.selectedOptions)
		const values = options.map(item => item.value)
		this.setState({
			fruit2: values
		})
	
		console.log('多选 - select - values=', values)
	}

	render() {
		const { fruit, fruit2 } = this.state
	
		return (
			<div>
				<form onSubmit={e => this.handleSubmitClick(e)}>
					<div>
						`select - 单选`
						<select value={fruit} onChange={e => this.handleSelectChange(e)}>
							<option value="apple">苹果</option>
							<option value="orange">桔子</option>
							<option value="banana">香蕉</option>
						</select>
					</div>
				
					<div>
						`select - 多选`
						<select multiple value={fruit2} onChange={e => this.handleSelectChange2(e)}>
							<option value="apple">苹果</option>
							<option value="orange">桔子</option>
							<option value="banana">香蕉</option>
						</select>
					</div>
				
					<div>
						<button type="submit">提交</button>
					</div>
				</form>
			</div>
		)
	}
}

export default App
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值