React中事件处理函数的name复用和bind复用
来源:互联网 发布:行业研究的数据来源 编辑:程序博客网 时间:2024/06/05 16:47
name复用
我们先来看没有使用name复用的代码:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>未使用name复用的代码</title> <script src="js/react.js"></script> <script src="js/react-dom.js"></script> <script src="js/browser.min.js"></script> </head> <body> <script type="text/babel"> var MyForm=React.createClass({ getInitialState:function(){ return ({ username:"", gender:"男", checked:true }); }, submitHandler:function(event){ event.preventDefault(); console.log(this.state); }, handleChangeUsername:function(event){ this.setState({username:event.target.value}); }, handleChangeGender:function(event){ this.setState({gender:event.target.value}); }, handleChangeChecked:function(event){ this.setState({checked:event.target.checked}); }, render:function(){ return ( <form onSubmit={this.submitHandler}> <label htmlFor="username">请输入用户名:</label> <input type="text" id="username" value={this.state.username} onChange={this.handleChangeUsername}/> <select value={this.state.gender} onChange={this.handleChangeGender}> <option>男</option> <option>女</option> </select> <br/> <label htmlFor="agree">同意用户协议</label> <input type="checkbox" id="agree" checked={this.state.checked}onChange={this.handleChangeChecked}/> <button type="submit">Submit</button> </form> ); } }); ReactDOM.render(<MyForm></MyForm>,document.body); </script> </body></html>
没有使用事件处理函数中的name复用的时候,我们需要为每一个事件,都写一个事件处理函数,但是,我们又发现这几个事件处理函数的功能又是一样的,所以,这个时候可以使用name绑定事件。
使用事件处理函数中的name绑定:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>未使用name复用的代码</title> <script src="js/react.js"></script> <script src="js/react-dom.js"></script> <script src="js/browser.min.js"></script> </head> <body> <script type="text/babel"> var MyForm=React.createClass({ getInitialState:function(){ return ({ username:"", gender:"男", checked:true }); }, handleChange:function(event){ var newState={}; //创建一个空对象 newState[event.target.name]=event.target.name=="checkbox"?event.target.checked:event.target.value; this.setState(newState); }, render:function(){ return ( <form onSubmit={this.submitHandler}> <label htmlFor="username">请输入用户名:</label> <input type="text" id="username" value={this.state.username} onChange={this.handleChange} name="username"/> <select value={this.state.gender} onChange={this.handleChange} name="gender"> <option>男</option> <option>女</option> </select> <br/> <label htmlFor="agree">同意用户协议</label> <input type="checkbox" id="agree" checked={this.state.checked} onChange={this.handleChange} name="checked"/> <button type="submit">Submit</button> </form> ); } }); ReactDOM.render(<MyForm></MyForm>,document.body); </script> </body></html>
Bind复用
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>bind复用</title> <script src="js/react.js"></script> <script src="js/react-dom.js"></script> <script src="js/browser.min.js"></script> </head> <body> <script type="text/babel"> var MyForm=React.createClass({ getInitialState:function(){ return ({ username:"", gender:"男", checked:true }); }, submitHandler:function(event){ event.preventDefault(); console.log(this.state); }, handleChange:function(name,event){ var newState={}; //创建一个空对象 newState[name]=event.target.name=="checkbox"?event.target.checked:event.target.value; this.setState(newState); }, render:function(){ return ( <form onSubmit={this.submitHandler}> <label htmlFor="username">请输入用户名:</label> <input type="text" id="username" value={this.state.username} onChange={this.handleChange.bind(this,"username")}/> <select value={this.state.gender} onChange={this.handleChange.bind(this,"gender")} > <option>男</option> <option>女</option> </select> <br/> <label htmlFor="agree">同意用户协议</label> <input type="checkbox" id="agree" checked={this.state.checked} onChange={this.handleChange.bind(this,"checked")} /> <button type="submit">Submit</button> </form> ); } }); ReactDOM.render(<MyForm></MyForm>,document.body); </script> </body></html>
阅读全文
0 0
- React中事件处理函数的name复用和bind复用
- React事件处理函数中绑定this的bind()函数
- React的事件处理函数
- 为元素的特定事件绑定事件处理函数 : bind
- Jquery事件绑定函数:on和bind的区别
- 关于jQuery用bind动态绑定事件无效的处理
- React中bind以及this处理,获取当前操作的元素
- Jquery中绑定事件(bind和live的区别)
- jQery事件绑定事件处理函数bind详解
- jQery事件绑定事件处理函数bind详解
- React点击事件的bind(this)传参问题
- react合成事件的三种绑定方式bind
- React点击事件的bind(this)传参问题
- 事件处理函数的复用
- React的bind(this)
- 事件处理函数中声明的变量
- js中事件处理函数的总结
- React中事件的用法
- Java 8的新特性—终极版
- 阿里巴巴Java开发手册及Java代码规约扫描eclipse和IDEA插件
- Python enumerate函数
- MD5加密
- 软件使用那些事
- React中事件处理函数的name复用和bind复用
- windows 屏幕坐标 窗口坐标 客户区坐标 逻辑坐标 设备坐标之间的关系及转换
- CQRS架构
- 线程池原理及创建(C++实现)
- CentOS6.5配置xftp
- 世界上第一台存储型程序计算机
- 数据结构之线性表预习
- The specified JRE installation does not exist 问题解决
- Nginx.conf反向代理配置详解