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路由的history对象的插件history的使用解读
这篇文章主要介绍了React路由的history对象的插件history的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-10-10解决React报错Expected `onClick` listener to be a function
这篇文章主要为大家介绍了React报错Expected `onClick` listener to be a function解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
最新评论