react如何优雅的绑定事件,并且可以优雅的传参

react函数调用以及传参。

一。先写不传参数的情况

1、es5写法

click(){
    dosomething.....
}

调用:onClick={this.click.bind(this)}

每次调用都需要传个this。

有的在constructor这样写

this.click = this.click.bind(this)

2、es6写法

click=()=>{
         dosomething...
}

调用:onClick={this.click},感觉很好

二。如果遇到传参就比较麻烦了

1、es5的写法

click(value){
       dosomething...
}

调用:onClick={this.click.bind(this,"111")}

依旧每次调用都需要传个this。

2、es6写法

click=(value)=>{
       dosomething...
}

调用:onClick={this.click.bind(this,"111")},

虽然第一个参数没用,传什么都行,1,2,3,4都可以,但是还不能不传。很烦

箭头函数调用
onClick={()=>{this.click("1111"))},

函数已经是箭头函数,还要在写个箭头函数,烦

3、对于以上方式,何不为es6重写个bind。箭头函数只写一次,bind不用传this,

Function.prototype.b = function(...args){
        var Fn = this;
        return function(e){
             Fn(...args,e);
         }
} 

click=(value)=>{
             dosomething...
}

调用:onClick={this.click.b("1111")}
用法与bind一样,只不过只有有参数的时候才使用,无参数直接
onClick={this.click}
就可以了

原文地址:http://blog.51cto.com/3795780/2153707

时间: 2024-10-17 03:43:17

react如何优雅的绑定事件,并且可以优雅的传参的相关文章

利用自定义绑定事件来 传值 实现子传父数据,父传子数据

例子 用$emit  绑定自定义事件 $emit("receive",item) 然后再触发父子的自定义事件 执行函数  v-on:receive="changeValueHandle"    changeValueHandle(value){this.val = value;}  item 就是要传入父级的值,value就是接收 item的 <body> <div id="app"> <div style=&quo

React 版本16.9.0 中配置路由以及路由传参

我的脚手架版本如下: "dependencies": { "antd": "^3.21.4", "jquery": "^3.4.1", "lodash": "^4.17.15", "react": "^16.9.0", "react-dom": "^16.9.0", "react

jQuery绑定事件的四种方式

jQuery绑定事件的四种方式 jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都有哪些. jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前 一:bind(type,[data],function(eventObject

jq绑定事件的4种方式

jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都有哪些. jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前,先来声明一个例子,各函数的用法将围绕这个例子进行,html代码如下: 列表元素1 列表元素2 列表元素3 列表

React 中双项绑定

React 中双项绑定,文本输入框的值,不能用 this.props.value 读取,而要定义一个 onChange 事件的回调函数,通过 event.target.value 读取用户输入的值. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>React--表单双项绑定</title> <scr

javascript绑定事件addEventListener与attachEvent

1.eleObj.addEventListener(eventName,handle,useCapture); eleObj:DOM元素: eventName:事件名称.注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等. handle:事件句柄函数,即用来处理事件的函数: useCapture:Boolean类型,是否使用捕获,一般用false: 2.eleObj.at

06 同时给多个元素绑定事件

1 要求 同时给多个相同元素绑定相同的时间 例如:给一个无序列表中的每一个li元素绑定一个事件,单击每个li元素的时候改变背景颜色和文本颜色 2 思路 利用jQuery的on()实现同时绑定 3 准备 3.1 jQuery的 on()方法 怎么使用? 在选择元素上绑定一个或多个事件的事件处理函数. on()方法绑定事件处理程序到当前选定的jQuery对象中的元素.在jQuery 1.7中,.on()方法 提供绑定事件处理程序所需的所有功能.帮助从旧的jQuery事件方法转换,see .bind(

js绑定事件和解绑事件

在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法  只支持IE678,不兼容其他浏览器 addEventListener方法   兼容火狐谷歌,不兼容IE8及以下 addEventListener方法 div.addEventListener('click',fn); div.addEventListener('click',fn2); function fn(){ console.log("春

关于怎样用PHP及JS来动态加载html元素及加载的html代码绑定事件失效的解决方法!

首先编写好的html代码放入php文件里面设置请求头格式为text/html 然后呢我将用jquery来操作 先定义一个用了盛放代码的容器 $(function(){}) => window.onload .sn-header-bg 是我用来盛放代码的容器 我的php文件名是header.php放在data目录下! 执行以上代码完成后一个页头就出来了! 加载完成后我在header里面绑定了两个函数,但是全部失效了,原因是没找到对应的dom元素, 根本原因是我没加载完成之前这两个函数就已经执行去寻