这次给大家带来react事件绑定this的几种方式,react事件绑定this的注意事项有哪些,下面就是实战案例,一起来看一下。
在react组件中,每个方法的上下文都会指向该组件的实例,即自动绑定this为当前组件,而且react还会对这种引用进行缓存,以达到cpu和内存的最大化。在使用了es6 class或者纯函数时,这种自动绑定就不复存在了,我们需要手动实现this的绑定
React事件绑定类似于DOM事件绑定,区别如下:
1.React事件的用驼峰法命名,DOM事件事件命名是小写
2.通过jsx,传递一个函数作为event handler,而不是一个字符串。
3.React事件不能通过返回false来阻止默认事件,需要显式调用preventDefault()
如下实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <a href= "#" onclick= "console.log('The link was clicked.'); return false" >
Click me
</a>
class ActionLink extends React.Component {
constructor(props) {
super(props);
}
handleClick(e) {
e.preventDefault();
console.log( 'The link was clicked.' );
}
render() {
return (
<a href= "#" onClick={this.handleClick.bind(this)}>Click Me...</a>
);
}
}
|
Salin selepas log masuk
ps:React组件类的方法没有默认绑定this到组件实例,需要手动绑定。
以下是几种绑定的方法:
bind方法
直接绑定是bind(this)来绑定,但是这样带来的问题是每一次渲染是都会重新绑定一次bind;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
del(){
console.log( 'del' )
}
render() {
return (
<p className= "home" >
<span onClick={this.del.bind(this)}></span>
</p>
);
}
}
|
Salin selepas log masuk
构造函数内绑定
在构造函数 constructor 内绑定this,好处是仅需要绑定一次,避免每次渲染时都要重新绑定,函数在别处复用时也无需再次绑定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
};
this.del=this.del.bind(this)
}
del(){
console.log( 'del' )
}
render() {
return (
<p className= "home" >
<span onClick={this.del}></span>
</p>
);
}
}
|
Salin selepas log masuk
::不能传参
如果不传参数使用双冒号也是可以
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
del(){
console.log( 'del' )
}
render() {
return (
<p className= "home" >
<span onClick={::this.del}></span>
</p>
);
}
}
|
Salin selepas log masuk
箭头函数绑定
箭头函数不仅是函数的'语法糖',它还自动绑定了定义此函数作用域的this,因为我们不需要再对它们进行bind方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
del=()=>{
console.log( 'del' )
}
render() {
return (
<p className= "home" >
<span onClick={this.del}></span>
</p>
);
}
}
|
Salin selepas log masuk
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
JS生成二维码
JS实现微信号随机切换
String.prototype.format如何使用字符串拼接
Atas ialah kandungan terperinci react事件绑定this的几种方式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!