React编写input组件传参共用onChange
之前写页面上的input比较少,所以没有单提出来一个组件,今天研究了下input组件,但共用一个onChange的问题卡了一会儿,查了下发现几个比较好的方法,分享下:
方法一
Input组件
let Input = React.createClass({
getInitialState: function() {
return { }
},
render: function() {
return (
<div className="inputwrapper">
<input type="text" placeholder={this.props.placeholder} onChange={this.props.valueChange.bind(null,this.props.name)}/>
</div>
);
}
})
使用Input组件
let FormAdd = React.createClass({
getInitialState: function() {
return { }
},
submit:function(){
console.log(this.state);
},
valueChange:function(name,e){
console.log(name+e.target.value);
this.setState({[name]: e.target.value})
},
render: function() {
return (
<div className="all">
<Input placeholder="请输入你的姓名" name="name" valueChange={this.valueChange}></Input>
<Input placeholder="请输入你的手机号" name="phone" valueChange={this.valueChange}> </Input>
<Input placeholder="请输入你的微信号" name="wechat" valueChange={this.valueChange}></Input>
<Input placeholder="请输入你的QQ号" name="qq" valueChange={this.valueChange}></Input>
<div className="rebtn" onClick={this.submit}></div>
</div>
</div>
);
}
})
方法二
Input组件
let Input = React.createClass({
getInitialState: function() {
return { }
},
render: function() {
return (
<div className="inputwrapper">
<input type="text" placeholder={this.props.placeholder} name={this.props.name} onChange={this.props.valueChange}/>
</div>
);
}
})
使用Input组件
let FormAdd = React.createClass({
getInitialState: function() {
return { }
},
submit:function(){
console.log(this.state);
},
valueChange:function(name,e){
this.setState({[e.target.name]: e.target.value});
/*下面这种方式也可以
var change = {};
change[e.target.name] = e.target.value;
this.setState(change);
*/
},
render: function() {
return (
<div className="all">
<Input placeholder="请输入你的姓名" name="name" valueChange={this.valueChange}></Input>
<Input placeholder="请输入你的手机号" name="phone" valueChange={this.valueChange}> </Input>
<Input placeholder="请输入你的微信号" name="wechat" valueChange={this.valueChange}></Input>
<Input placeholder="请输入你的QQ号" name="qq" valueChange={this.valueChange}></Input>
<div className="rebtn" onClick={this.submit}></div>
</div>
);
}
})
注:setState({xxx:xxx}) 第一个参数默认会被认为是字符串,因为动态传递的是一个变量 要用[]中括号包裹
参考:React.js: Identifying different inputs with one onChange handler
React编写input组件传参共用onChange的更多相关文章
- 从 Vue 的视角学 React(四)—— 组件传参
组件化开发的时候,参数传递是非常关键的环节 哪些参数放在组件内部管理,哪些参数由父组件传入,哪些状态需要反馈给父组件,都需要在设计组件的时候想清楚 但实现这些交互的基础,是明白组件之间参数传递的方式, ...
- React(7) --react父子组件传参
react父子组件传参 父级向子级传参:在父组件中,我们引入子组件,通过给子组件添加属性,来起到传参的作用,子组件可以通过props获取父组件传过来的参数. 在父组件中: import React f ...
- vue 父子组件传参
父向子组件传参 例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,component ...
- vue子组件传参给父组件
关于父组件传参给子组件,可以看我另一篇文章 教程开始: 我们要实现的效果是:在子组件的Input框输入,父组件中实时更新显示.(也就是把子组件中的数据传给父组件) 一.子组件代码 template部分 ...
- vue-父子组件传参以及无限级评论
vue父子组件的使用 <template> <div> <zi :data="data" /> </div> </templa ...
- Vue 子组件向父组件传参
直接上代码 <body> <div id="counter-event-example"> <p>{{ total }}</p> & ...
- Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)
一.前言 1.公共轮播图的实现 2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...
- Vue-admin工作整理(四):路由组件传参
路由组件传参:如果在一个页面中,需要根据路由去获得参数,去对页面进行一些逻辑处理,首先可以通过this.$router来获取路由实例的参数,这样页面组件和路由就进行了耦合,为了进行分离,更大程度复用, ...
- VueJs(11)---vue-router(命名路由,命名视图,重定向别名,路由组件传参)
vue-router 上篇文章讲了第一篇vue-router相关文章,文章地址:VueJs(10)---vue-router(进阶1) 一.命名路由 有时候,通过一个名称来标识一个路由显得更方便一些, ...
随机推荐
- language-detection 语言检测工具 java版的应用demo
本文基本借鉴大佬文章:http://www.cnblogs.com/makemelaugh/archive/2012/09/26/2704802.html 在此基础上添加一些自己的补充,方便查阅. 提 ...
- Ambari 2.4.2 汉化
1.ambari-web (1)apache-ambari-2.4.2-src/ambari-web/app/messages.js 该文件是KeyValue文件,3000多行.将Value部分翻译成 ...
- css3变换,过度,动画实现梦幻网页
html和css3一出,整个互联网设计发生了颠覆性的改变,各大IT企业也推出了很多新颖的设计,比如百度浏览器的下载首页,fullpage设计风格加css动画让网页看起来很流畅舒服. css3的变换有3 ...
- 学习笔记TF026:多层感知机
隐含层,指除输入.输出层外,的中间层.输入.输出层对外可见.隐含层对外不可见.理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数.隐含层越多,越容易拟合复杂函数.拟合复杂函数,所需 ...
- CODE大全——机器学习
聚类 聚类任务 背景 在无监督学习(密度估计.异常检测等)中,训练样本的标记信息是未知的(即不人为指定),旨在发现数据之间的内在联系和规律,为进一步的数据分析提供基础. 此类学习任务中研究最多.应用最 ...
- VMware workstation批量创建虚拟机和自动化安装操作系统(一)
一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...
- Android百度地图开发-第一篇:申请、搭建百度地图
一.前言 这是第一篇关于Android使用百度地图的学习记录,主要记录: 1.在百度地图开发者平台上申请API Key. 2.在自己的应用中加入百度地图的Android版SDK. 3.在自己的应用中显 ...
- 花了一年时间开发的三维弯管机交互式转档软件(三维管子模型UG,SOLIDWORK,PRO/E文件转成YBC)
在弯管机加工中,由管子模型生成可直接进行弯管加工的YBC数据可以大大提高弯管编程过程.传统的做法是先用dxf数据文件(用autocad绘制管子的轴心线数据)转出XYZ数据,然后由XYZ数据转成YBC数 ...
- 基于Python使用SVM识别简单的字符验证码的完整代码开源分享
关键字:Python,SVM,字符验证码,机器学习,验证码识别 1 概述 基于Python使用SVM识别简单的验证字符串的完整代码开源分享. 因为目前有了更厉害的新技术来解决这类问题了,但是本文作 ...
- POJ 2393 Yogurt factory 贪心
Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the ...