React中事件绑定this指向三种方法的实现

 更新时间:2021年05月12日 09:21:40   作者:沐浴 前端  
这篇文章主要介绍了React中事件绑定this指向三种方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.箭头函数

1.利用箭头函数自身不绑定this的特点;

2.render()方法中的this为组件实例,可以获取到setState();

class App extends React.Component{
    state ={
        count: 0
    }
    // 事件处理程序
    onIncrement() {
        console.log('事件处理函数中的this:',this)
        this.setState({
            count:this.state.count+1
        })
    }
    // 渲染
    render() {
        return (
            <div>
                <h1> {this.state.count}</h1>
              // 箭头函数中的this指向外部环境,此处为:render()方法
                <button onClick={()=>this.onIncrement()}>+1</button>
                {/* <button onClick={this.onIncrement()}>+1</button> */}
            </div>
        )
    }
}

2.Function.proptype.bind()

1.利用ES5中的bind方法,将事件处理程序中的this与组件实例绑定到一起

class App extends React.Component{
    constructor() {
        super()
        // 数据
        this.state ={
            count: 0
        }
        // 第一中方法.bind 改变this指向,返回一个函数,不执行该函数
        this.onIncrement = this.onIncrement.bind(this)
    }
     // 事件处理程序
     onIncrement() {
         console.log('事件处理函数中的this:',this)
         this.setState({
             count:this.state.count+1
         })
     }
    // 渲染
    render() {
        return (
            <div>
                <h1> {this.state.count}</h1>
                <button onClick={this.onIncrement}>+1</button>
                {/* <button onClick={this.onIncrement()}>+1</button> */}
            </div>
        )
    }
}

3.class的实例方法

1.利用箭头函数形式的class实例方法

2.该语法是实验性语法,但是由于babel的存在就可以直接使用

class App extends React.Component{
    constructor() {
        super()
        // 数据
        this.state ={
            count: 0
        }
    }
      // 事件处理程序 
      onIncrement=()=> {
        console.log('事件处理函数中的this:',this)
        this.setState({
            count:this.state.count+1
        })
    }
    // 渲染
    render() {
        return (
            <div>
                <h1> {this.state.count}</h1>
                <button onClick={this.onIncrement}>+1</button>
                {/* <button onClick={this.onIncrement()}>+1</button> */}
            </div>
        )
    }
}

 到此这篇关于React中事件绑定this指向三种方法的实现的文章就介绍到这了,更多相关React 事件绑定this指向内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React diff算法原理详细分析

    React diff算法原理详细分析

    经典的diff算法中,将一棵树转为另一棵树的最低时间复杂度为 O(n^3),其中n为树种节点的个数。假如采用这种diff算法,一个应用有1000个节点的情况下,需要比较十亿次才能将dom树更新完成,显然这个性能是无法让人接受的
    2022-11-11
  • React路由的history对象的插件history的使用解读

    React路由的history对象的插件history的使用解读

    这篇文章主要介绍了React路由的history对象的插件history的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • React事件处理过程中传参的实现方法

    React事件处理过程中传参的实现方法

    这篇文章主要介绍了React事件处理过程中传参的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 如何深入理解React的ref 属性

    如何深入理解React的ref 属性

    关于 Refs ,React 官网讲解的对于新手来说不太友好,还是自己一字一句解读后并以代码验证的方式后真正理解的.
    2021-05-05
  • react项目使用redux初始化方式

    react项目使用redux初始化方式

    这篇文章主要介绍了react项目使用redux初始化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 解决React报错Expected `onClick` listener to be a function

    解决React报错Expected `onClick` listener to be a function

    这篇文章主要为大家介绍了React报错Expected `onClick` listener to be a function解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 详解react服务端渲染(同构)的方法

    详解react服务端渲染(同构)的方法

    这篇文章主要介绍了详解react服务端渲染(同构)的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 教你在react中创建自定义hooks

    教你在react中创建自定义hooks

    简单来说就是使用自定义hook可以将某些组件逻辑提取到可重用的函数中。 自定义hook是一个从use开始的调用其他hook的Javascript函数,下面看下react中创建自定义hooks的相关知识,感兴趣的朋友一起看看吧
    2021-11-11
  • React中getDefaultProps的使用小结

    React中getDefaultProps的使用小结

    React中的getDefaultProps功能允许开发者为类组件定义默认属性,提高组件的灵活性和容错性,本文介绍了getDefaultProps的作用、语法以及最佳实践,并探讨了其他替代方案,如函数组件中的默认参数、高阶组件和ContextAPI等,理解这些概念有助于提升代码的可维护性和用户体验
    2024-09-09
  • React Redux应用示例详解

    React Redux应用示例详解

    这篇文章主要介绍了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我们需要将之前编写的redux代码,融入到react当中去,本文给大家详细讲解,需要的朋友可以参考下
    2022-11-11

最新评论