React控件表单

React控件表单 就是通过状态state实时更新并收集信息的Form表单。

下面简单地实现了React表单中的单选、多选、下拉框以及输入框的表单功能。
import React,{Component} from 'react'

export default class FormData extends Component{
    state={
        val: '',
        sex: '0',
        posily: '职务',
        position: ['班长','副班长','纪律委员'],
        hobby: 
        [
            { text:'游泳健身',checked:true },
            { text:'休闲娱乐',checked:false },
            { text:'肥宅快乐水',checked:false },
        ]
    }
    //提交事件
    handleSubmit = (e) => {
    	//阻止默认提交事件
        e.preventDefault()
        const {val,sex,posily,hobby} = this.state
        console.log(val,sex,posily,hobby);
    }
    //输入框
    handleChange = (e) => {
        this.setState({
            val: e.target.value
        })
    }
    //单选框
    handleSex = (e) => {
        this.setState({
            sex: e.target.value
        })
    }
    //下拉框
    handleSelect = (e) => {
        this.setState({
            posily: e.target.value
        })
    }
    //多选框
    handleCheckbox = (index) => {
        const {hobby} = this.state
        hobby[index].checked = !hobby[index].checked
        this.setState({hobby})
    }
    render(){
        const {val,sex,posily,position,hobby} = this.state
        return(
            <>
                <h1>React表单</h1>
                <form onSubmit = {this.handleSubmit}>
                    <input type = "text" value = {val} onChange={this.handleChange}/>
                    <input 
                        type ="radio"
                        value ="0"
                        checked = {sex ==='0'}
                        onChange = {this.handleSex}
                    /><input 
                        type ="radio"
                        value ="1"
                        checked = {sex ==='1'}
                        onChange ={this.handleSex}
                    /><select value={posily} onChange={this.handleSelect}>
                        {
                            position.map((item,index)=>{
                                return <option value={item} key={index}>{item}</option>
                            })
                        }
                    </select>
                    爱好:
                    {
                        hobby.map((item,index) => {
                            return (
                                <div key={index}>
                                    <input 
                                        type="checkbox"
                                        checked = {item.checked}
                                        onChange = {this.handleCheckbox.bind(this,index)}
                                    />{item.text}
                                </div>
                            )
                        })
                    }
                    <button type="submit">submit</button>
                </form>
            </>
        )
    }
}

大致的效果图如下,原始样式仅供参考:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值