zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    嗨!亲爱的朋友们,欢迎您光临我的BLOG
    SQL里的各种语句语法
    2000/XP登陆后自动注销解决办法(WORM_FUNNER.A)
    ASP程序加密解密方法全面解析
    双击硬盘盘符打不开文件的处理方法
    关于rs.Open sql,conn语句
    C# 图片被占用资源无法删除或者修改,转换成数据流解决
    asp.net div 使用
    鼠标移到控件上显示,移出控件消失
    C# 文件关联 (jpg等图片格式为例)
  • 原文地址:https://www.cnblogs.com/leinov/p/7450361.html
Copyright © 2011-2022 走看看