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) 一.命名路由 有时候,通过一个名称来标识一个路由显得更方便一些, ...
随机推荐
- java用户界面——加载图片 jpg GIF
java用户界面--加载图片 jpg GIF 代码如下: package day08; import java.awt.GridLayout; import javax.swing.Icon;impo ...
- CentOS7 搭建Ambari-Server,安装Hadoop集群(一)
2017-07-05:修正几处拼写错误,之前没发现,抱歉! 第一次在cnblogs上发表文章,效果肯定不会好,希望各位多包涵. 编写这个文档的背景是月中的时候,部门老大希望我们能够抽时间学习一下Had ...
- 浅谈JVM与内存分配
一.程序内存分配 初始内存分配 当一个程序准备运行时,它首先向java虚拟机要内存,但是java虚拟机本身没有权限,它只能向操作系统申请内存,此时java虚拟机会拥有一个初始内存, 此处额外说明一下e ...
- ASP.NET底层封装HttpModule实例---FormsAuthentication类的分析
HttpModule是用来注册HttpApplication事件的,实现IHttpModule接口的托管代码模块可以访问该请求管道的所有事件.那么对于我们最常用的ASP.NET Forms身份验证模块 ...
- ionic时间插件ion-datetime-picker
https://github.com/katemihalikova/ion-datetime-picker
- OpenLayers3--ol3--新特性
OL3: A high-performance, feature-packed library for all your mapping needs < 一个可以满足各种地图应用的高性能的.功能 ...
- Windows10系统PHP开发环境配置
Windows下搭建(Apache+PHP+MySQL)=>WAMP Linux下搭建(Apache+PHP+MySQL) =>LAMP PHP开发环境配置一般有套件安装和自定义安装两种方 ...
- Linux(5)压缩和归档管理
压缩和归档管理 tar :归档管理 此命令可以把一系列文件归档到一个大文件中, 使用格式: -v :显示进度 -f :指定文件名称, f后面一定是.tar文件, 此参数必须放在选项最后 -t :列出文 ...
- [补档]Cube
Cube 题目 给你一个n×m的棋盘,有一个1×1×2的长方体竖直放在(1,1)上,你可以将其在棋盘上滚动,你的目标是让其竖直放在(n,m)上,问至少需要多少次操作.(放倒.竖直.翻滚) INPUT ...
- Maven导出Project依赖的jar包
Maven导出Project依赖的jar包 从Maven仓库中导出jar包: mvn dependency:copy-dependencies 会导出到Project的targed/dependenc ...