美文网首页
箭头函数对this的绑定

箭头函数对this的绑定

作者: 心如止水_1c5b | 来源:发表于2017-11-17 15:32 被阅读0次

本人在接触VUE项目的时候,用vue-resource做接口请求时,写法常常如下:

// 传统写法

this.$http.get('/someUrl', [options]).then(function(response){

// 响应成功回调

}, function(response){

// 响应错误回调

});

// Lambda写法

this.$http.get('/someUrl', [options]).then((response) => {

// 响应成功回调

}, (response) => {

// 响应错误回调

});

第一种的传统写法里面this的指向不明确,如果没有在外层函数声明:var that=this,二直接实用this,函数会报错,说this 是undefined;

第二种Lambda写法的箭头函数则是改变了this的指向,this执行函数的外层而并非函数本身。

所以之前一直困惑,有时候需要些var that=this,而有时候不写又不会报错,原来是因为以上的原因,是因为自己的请求写法不统一。

我真正明白这个问题的缘由是因为在处理react的函数引用的时候,以下是错误代码:

setNewNumber(){

this.setState({

data:this.state.data+1

})

}

render(){

return(

<div>

<button onClick={this.setNewNumber()} ></button>

</div>

);

}

以上这种写法是会导致报错,

只是因为this的指向存在问题,在setNewNumber函数下的this没有setState这个属性。

正确的写法如下:

<button onClick={()=>this.setNewNumber()}></button>

相关文章

  • React事件绑定

    1、在构造函数内使用bind绑定this 2、箭头函数绑定this 3、使用bind()绑定this 4、使用箭头...

  • 箭头函数对this的绑定

    本人在接触VUE项目的时候,用vue-resource做接口请求时,写法常常如下: // 传统写法 this.$h...

  • es6

    箭头函数与普通函数的区别 箭头函数是匿名函数,不能作为构造函数,不能使用new 箭头函数不绑定arguments,...

  • 箭头函数没有绑定this

    ==箭头函数没有绑定this== 不要把【箭头函数】和【箭头函数的定义函数】弄混淆 ecma262规范中明确规定,...

  • ES6箭头函数与普通函数区别

    箭头函数作为匿名函数,是不能作为构造函数的,不能使用new 箭头函数没有原型属性 箭头函数不绑定arguments...

  • React(组件的this绑定)

    在constructor中绑定this 在render中绑定this 箭头函数

  • ES6箭头函数的特性

    箭头函数是匿名函数,不绑定自己的this,arguments,super,new.target 箭头函数会捕获其所...

  • ES6系列之函数部分

    本篇目录: 箭头函数箭头函数的this的绑定注意点 函数的默认参数应用 rest参数 小结 箭头函数 在之前ES5...

  • 箭头函数

    引入箭头函数有两个方面的作用:更简短的函数并且不绑定this 普通函数和箭头函数的区别: 箭头函数的this指向规...

  • 一句话明白箭头函数中的this

    关于箭头函数中this值的问题,网上查查,会告诉你 “箭头函数的this固定化,箭头函数中的this绑定定义时所在...

网友评论

      本文标题:箭头函数对this的绑定

      本文链接:https://www.haomeiwen.com/subject/wbjjvxtx.html