React 之form表单、select、textarea、checkbox使用
1、案例如下
import React from 'react'; /**
* 非约束性组(类似defaultValue等属性,不可以程序修改):
<input type="text" defaultValue="a" /> 这个 defaultValue 其实就是原生DOM中的 value 属性。
这样写出的来的组件,其value值就是用户输入的内容,React完全不管理输入的过程。 约束性组件(可以修改属性值):
<input value={this.state.username} type="text" onChange={this.handleUsername} />
这里,value属性不再是一个写死的值,他是 this.state.username, this.state.username 是由 this.handleChange 负责管理的。
这个时候实际上 input 的 value 根本不是用户输入的内容。而是onChange 事件触发之后,由于 this.setState 导致了一次重新渲染。
不过React会优化这个渲染过程。看上去有点类似双向数据绑定
*/
class Home6 extends React.Component{
constructor(props){
super(props);
this.state = { msg:"react表单",
name:'杨文杰',
sex:'',
city:'',
citys:[ '北京','上海','深圳'
],
hobby:[
{
'title':"睡觉",
'checked':true
},
{
'title':"吃饭",
'checked':false
},
{
'title':"敲代码",
'checked':true
}
],
info:'' };
} /**
* 获取用户名
* @param e
*/
handelSubmit=(e)=>{
//阻止submit的提交事件
e.preventDefault();
console.log(this.state.name,this.state.city);
}
handelName=(e)=>{
this.setState({
name:e.target.value
})
}
/**
* 男女单项选择
* @param e
*/
changeSex=(e)=>{
this.setState({
sex:e.target.value
}) }
/**
* 获取select中的城市
*/
getCity=(e)=>{
this.setState({
city:e.target.value
})
} /**
* 注意:爱好有多个值
* @param e
*/
changeHobby(key){
var hobby = this.state.hobby;
hobby[key].checked=!hobby[key].checked;
this.setState({
hobby:hobby
})
} handleInfo=(e)=>{
this.setState({
info:e.target.value
})
}
render() {
return(
<div>
这是HOME6组件
<br/>
{this.state.msg}
<p>for表单获取值</p>
<form onSubmit={this.handelSubmit}>
用户名:<input type="text" value={this.state.name} onChange={this.handelName}/>
<input type="radio" value="" checked={this.state.sex==} onChange={this.changeSex}/>男
<input type="radio" value="" checked={this.state.sex==} onChange={this.changeSex}/>女 <br/>
<input type="submit" defaultValue="提交"/>
<br/>
居住城市:
<select value={this.state.city} onChange={this.getCity}>
{
this.state.citys.map(function (value,key) {
return <option key={key}>{value}</option>
})
}
</select>
<br/>
爱好:
{ //注意key值指向
this.state.hobby.map( (value,key)=>{
return (<span key={key}>
<input type="checkbox" checked={value.checked} onChange={this.changeHobby.bind(this,key)}/>{value.title}
</span>)
})
}
<br/>
评论区:
<textarea value={this.state.info} onChange={this.handleInfo}> </textarea> </form>
</div>
)
}
}
export default Home6;
React 之form表单、select、textarea、checkbox使用的更多相关文章
- HTML学习笔记 域元素(form表单、textarea文本域、fieldset域集合、input使用) 案例 第四节 (原创)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 前端笔记:React的form表单全部置空或者某个操作框置空的做法
1.全部置空的做法,一般在弹出框关闭后,需要重置该form所有表单: this.props.form.resetFields(); 2.针对某个操作框置空的做法 例如,form表单里有一个部门和一个张 ...
- form表单select联动
下拉列表:二级联动菜单 Select对象的常用属性 options[]:返回所有option组成的一个数组: name:名称 value:option的value的值 length:设置或读取opti ...
- 前端 HTML form表单标签 textarea标签 多行文本
<textarea></textarea>作用:允许用户录入多行数据到表单控件中 <!DOCTYPE html> <html lang="en&qu ...
- form表单select的选项值选择
html: <form action=""> <p>选择城市</p> <p> <select name="" ...
- Form表单,textarea标签输入框 字数限制,和已输入字数的统计显示
<script type="text/javascript"> $(document).ready(function() { <%-- 页面进来时就调用 --%& ...
- react + antd Form表单校验
非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...
- [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- react引用antd的form表单
引用form是第三方插件ant插件,官网网址:https://ant.design/.用到的antd的版本是@2.0.1.form(https://ant.design/components/form ...
随机推荐
- php关于系统环境配置的一些函数
disk_free_space() :返回指定目录的可用空间(以字节为单位)
- 002-loganalyzer装完报错no syslog records found
1.登录mysql查看库Syslog中的表SystemEvents;是否有返回数据 # select * from Syslog.SystemEvents; #又返回数据说明rsyslog配置正确, ...
- php socket如何实现长连接
长连接是什么? 朋友们应该都见过很多在线聊天工具和网页在线聊天的工具.学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面:Gmail也有此功能,如果邮箱里收到了新的邮件 ...
- k8spod探测
一.pod存活性探测 pod spec为容器列表中的相应容器定义其专用的探针即可启用存活性探测,目前,k8s的容器支持存活性探测的方法包含:ExecAction.TCPSocketActon和HTTP ...
- C++类模板——博客链接
https://www.jianshu.com/p/70ca94872418 C++类模板,你看我就够了 值得学习~
- 将TextEdit设置为密码框
属性--Properties--UseSystemPasswordChar设置为true
- Qt修改图片的背景色及设置背景色为透明的方法
先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...
- HyperSQL 链接参数中文件的路径
如果我们在系统中配置下面的连接参数: spring.datasource.url=jdbc:hsqldb:file:~/db/cwiki-us-jpetstore 我们怎么知道 hsqldb 数据库的 ...
- scala实战学习-尾递归函数
求 $$ \Sigma\sideset{^b_a}f(x) $$ object sumfunc{ def sum(f: Int => Int)(a: Int)(b:Int): Int = { @ ...
- [CSP-S模拟测试]:花(DP)
题目传送门(内部题111) 输入格式 一个整数$T$,表示测试数据组数. 每组测试数据占一行,两个整数,分别表示$L$和$S$. 输出格式 对每组数据,输出一个整数表示答案. 样例 样例输入1: 13 ...