React编写input组件传参共用onChange


方法一

Input组件

  1. let Input = React.createClass({
  2. getInitialState: function() {
  3. return { }
  4. },
  5. render: function() {
  6. return (
  7. <div className="inputwrapper">
  8. <input type="text" placeholder={this.props.placeholder} onChange={this.props.vauleChange.bind(null,this.props.name)}/>
  9. </div>
  10. );
  11. }
  12. })

使用Input组件

  1. let FormAdd = React.createClass({
  2. getInitialState: function() {
  3. return { }
  4. },
  5. submit:function(){
  6. console.log(this.state);
  7. },
  8. vauleChange:function(name,e){
  9. console.log(name+e.target.value);
  10. this.setState({[name]: e.target.value})
  11. },
  12. render: function() {
  13. return (
  14. <div className="all">
  15. <Input placeholder="请输入你的姓名" name="name" vauleChange={this.vauleChange}></Input>
  16. <Input placeholder="请输入你的手机号" name="phone" vauleChange={this.vauleChange}> </Input>
  17. <Input placeholder="请输入你的微信号" name="wechat" vauleChange={this.vauleChange}></Input>
  18. <Input placeholder="请输入你的QQ号" name="qq" vauleChange={this.vauleChange}></Input>
  19. <div className="rebtn" onClick={this.submit}></div>
  20. </div>
  21. </div>
  22. );
  23. }
  24. })

方法二

Input组件

  1. let Input = React.createClass({
  2. getInitialState: function() {
  3. return { }
  4. },
  5. render: function() {
  6. return (
  7. <div className="inputwrapper">
  8. <input type="text" placeholder={this.props.placeholder} name={this.props.name} onChange={this.props.vauleChange}/>
  9. </div>
  10. );
  11. }
  12. })

使用Input组件

  1. let FormAdd = React.createClass({
  2. getInitialState: function() {
  3. return { }
  4. },
  5. submit:function(){
  6. console.log(this.state);
  7. },
  8. vauleChange:function(name,e){
  9. this.setState({[e.target.name]: e.target.value});
  10. /*下面这种方式也可以
  11. var change = {};
  12. change[e.target.name] = e.target.value;
  13. this.setState(change);
  14. */
  15. },
  16. render: function() {
  17. return (
  18. <div className="all">
  19. <Input placeholder="请输入你的姓名" name="name" vauleChange={this.vauleChange}></Input>
  20. <Input placeholder="请输入你的手机号" name="phone" vauleChange={this.vauleChange}> </Input>
  21. <Input placeholder="请输入你的微信号" name="wechat" vauleChange={this.vauleChange}></Input>
  22. <Input placeholder="请输入你的QQ号" name="qq" vauleChange={this.vauleChange}></Input>
  23. <div className="rebtn" onClick={this.submit}></div>
  24. </div>
  25. );
  26. }
  27. })

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM