详解react关于事件绑定this的四种方式

在react组件中,每个方法的上下文都会指向该组件的实例,即自动绑定this为当前组件,而且react还会对这种引用进行缓存,以达到cpu和内存的最大化。在使用了es6 class或者纯函数时,这种自动绑定就不复存在了,我们需要手动实现this的绑定

React事件绑定类似于DOM事件绑定,区别如下:

1.React事件的用驼峰法命名,DOM事件事件命名是小写

2.通过jsx,传递一个函数作为event handler,而不是一个字符串。

3.React事件不能通过返回false来阻止认事件,需要显式调用preventDefault()

如下实例:

ps:React组件类的方法没有认绑定this到组件实例,需要手动绑定。

以下是几种绑定的方法:

bind方法

直接绑定是bind(this)来绑定,但是这样带来的问题是每一次渲染是都会重新绑定一次bind;

rush:js;"> class Home extends React.Component {

constructor(props) {
super(props);
this.state = {
};
}

del(){
console.log('del')
}

render() {
return (
<div className="home">

); } }

构造函数内绑定

在构造函数 constructor 内绑定this,好处是仅需要绑定一次,避免每次渲染时都要重新绑定,函数在别处复用时也无需再次绑定

rush:js;"> class Home extends React.Component {

constructor(props) {
super(props);
this.state = {

};
this.del=this.del.bind(this)
}

del(){
console.log('del')
}

render() {
return (
<div className="home">

); } }

::不能传参

如果不传参数使用双冒号也是可以

rush:js;"> class Home extends React.Component {

constructor(props) {
super(props);
this.state = {

};
}

del(){
console.log('del')
}

render() {
return (
<div className="home">

); } }

箭头函数绑定

箭头函数不仅是函数的'语法糖',它还自动绑定了定义此函数作用域的this,因为我们不需要再对它们进行bind方法

constructor(props) {
super(props);
this.state = {

};

}

del=()=>{
console.log('del')
}

render() {
return (
<div className="home">

); } }

以上几种方法都可以实现this绑定,使用那种各自的习惯;希望对大家的学习有所帮助,也希望大家多多支持编程之家。

reactreactreactreactreact事件绑定this事件this绑定this

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...