React编写input组件传参共用onChange

简介: 之前写页面上的input比较少,所以没有单提出来一个组件,今天研究了下input组件,但共用一个onChange的问题卡了一会儿,查了下发现几个比较好的方法,分享下:方法一Input组件let Input = React.

之前写页面上的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.vauleChange.bind(null,this.props.name)}/>
            </div>

          );
        }
})

使用Input组件

let FormAdd = React.createClass({

    getInitialState: function() {
    
        return {  }
    },
   
    submit:function(){
    
        console.log(this.state);
        
    },
    
    vauleChange: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" vauleChange={this.vauleChange}></Input>
                    <Input placeholder="请输入你的手机号" name="phone" vauleChange={this.vauleChange}> </Input>
                    <Input placeholder="请输入你的微信号" name="wechat" vauleChange={this.vauleChange}></Input>
                    <Input placeholder="请输入你的QQ号" name="qq" vauleChange={this.vauleChange}></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.vauleChange}/>
            </div>

          );
        }
})

使用Input组件

let FormAdd = React.createClass({

    getInitialState: function() {
    
        return {  }
    },
   
    submit:function(){
    
        console.log(this.state);
        
    },
    
    vauleChange: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" vauleChange={this.vauleChange}></Input>
                <Input placeholder="请输入你的手机号" name="phone" vauleChange={this.vauleChange}> </Input>
                <Input placeholder="请输入你的微信号" name="wechat" vauleChange={this.vauleChange}></Input>
                <Input placeholder="请输入你的QQ号" name="qq" vauleChange={this.vauleChange}></Input>
                <div className="rebtn" onClick={this.submit}></div>
            </div>

          );
        }
})

注:setState({xxx:xxx}) 第一个参数默认会被认为是字符串,因为动态传递的是一个变量 要用[]中括号包裹

参考:React.js: Identifying different inputs with one onChange handler

目录
相关文章
|
6月前
|
存储 前端开发 JavaScript
react怎么实现跨页面传参
react怎么实现跨页面传参
193 2
|
6月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
121 0
|
2月前
|
前端开发 算法 JavaScript
React项目input输入框输入自动失去焦点
本文讨论了在React项目中如何处理input输入框自动失去焦点的问题,特别是在移动端开发中。文章提供了一个使用React Native的TouchableWithoutFeedback组件来监听点击事件,并在事件处理函数中通过调用Keyboard.dismiss()方法使输入框失去焦点的示例代码。这种方法可以确保在用户点击页面其他区域时,键盘能够收起,输入框失去焦点。
93 1
React项目input输入框输入自动失去焦点
|
2月前
|
前端开发
react动态生成input、select标签以及思路总结
本文介绍了在React中动态生成input和select标签的方法,包括准备数据结构、在组件挂载时动态添加状态、页面渲染以及输入处理,最后总结了实现思路。
36 1
react动态生成input、select标签以及思路总结
|
4月前
|
JavaScript 前端开发
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
160 1
|
4月前
|
前端开发 JavaScript
react18【系列实用教程】useState —— 声明响应式变量(2024最新版)含useState 的异步更新机制,更新的合并,函数传参获取更新值,不同版本异步更新差异,更新对象和数组
react18【系列实用教程】useState —— 声明响应式变量(2024最新版)含useState 的异步更新机制,更新的合并,函数传参获取更新值,不同版本异步更新差异,更新对象和数组
244 0
|
5月前
|
前端开发 索引
react怎么做到点击传参
react怎么做到点击传参
52 0
|
6月前
|
JavaScript 前端开发 开发者
深入比较Input、Change和Blur事件:Vue与React中的行为差异解析
深入比较Input、Change和Blur事件:Vue与React中的行为差异解析
|
6月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
52 1