博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React中的表单元素
阅读量:4981 次
发布时间:2019-06-12

本文共 1746 字,大约阅读时间需要 5 分钟。

在web应用开发当中,表单还是很重要的元素。

应用表单组件有:文本框(input、textarea)、单选按钮和复选框、Select组件。
文本框:文本框的状态改变即文本框中的内容的改变。此时的state应该是inputValue或者是textareaValue。在状态改变时的处理函数应该是

handleInputChange(e){    this.setState({        inputValue:e.target.value    });}

单选按钮和复选框:

1.单选按钮:它的状态state就是radioValue

this.state = {    radioValue:''};//在这里只是设置了radioValue的值,因为单选按钮本来就是只有一个按钮被选中//当用户点击单选按钮的时候,就会通过下面的函数获取到选中的按钮的value//即radioValuehandleChange(e){    this.setState({        radioValue:e.target.value,    })}//下面通过===一次判断每个input标签的值和radioValue是否相等来判断checked的值是true还是false

2.复选框:它的状态是通过一个数组来保存的,因为复选,即就应该保存选中的多个复选框,以便用户进行操作,从而改变状态而重新渲染。

this.state = {    coffee:[],}//通过一个数组来保存状态handleChange(e){    const {checked,value} = e.target;    let {coffee} = this.state;    //判断这个复选框是否被选中    if(checked && coffee.indexOf(value) === -1){        coffee.push(value);    }else{        coffee = coffee.filter(i => i !== value);    }    this.setState({        coffee,    });}

然后通过coffee.indexOf('aa') 去遍历coffee这个数组,是否能找到和aa相同的字符串,来进行复选框checked是true还是false的判断。

请你选择你最喜欢的咖啡

Select组件:如果是单选,就用单个变量保存,如果是多选就用一个数组保存。

1.单选:

this.state = {    area:'',}handleChange(e){    this.setState({        area:e.target.value,    });}render(){    const {area} = this.state;    return(            )}

2.多选

this.state = {    area:['beijing','shanghai'],};handleChange(e){    const {options} = e.target;    //注意,这里返回的options是一个对象,并非数组    const area = Object.keys(options).    filter(i => options[i].selected === true)    .map(i => options[i].value);    this.setState({        area,    });}render(){    const {area} = this.state;    return(            );}

转载于:https://www.cnblogs.com/sminocence/p/8451255.html

你可能感兴趣的文章
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>